-
-
[分享]pwn姿势三 && 四
-
发表于: 2017-5-12 15:39 4420
-
http://pwnable.kr/ bof && flag
os: kali 64 &&win7 64
toos:gdb—peda插件 ida64 登陆pwbalble.kr 打开bof 根据英文提示:
Nana told me that buffer overflow is one of the most common software vulnerability. Is that true?
根据提示可获得信息:此题可能跟缓冲区溢出有关:
此时进行查看源代码获取更多信息:bof。c
下载bof文件,直接拖进kali中 ,利用命令:file bof 查看文件为:
打开windows 7虚拟机,利用ida分析 bof如图:
使用查看伪代码命令 F5: 此处伪代码对应的是main()函数 :
接下来双击func()函数来到func()函数内部:此处伪代码对应func()函数
由此我们可以进行比较出来:a1的地址为 [ebp+8] s的首地址是 【ebp- 2c】
因此 0x8 + 0x2c = 0x34 = 52d 因为栈区是从高向低生长的,所以此时想覆盖掉 key的值为0xcafebabe 就需要先进行覆盖前面的52个字节 下面通过调试bof文件进行验证此想法。
先执行objdump -d bof 进行查看反汇编代码:
重点位置已经标注,如相对地址 68a 和调用func()函数 69a等:
接下来进行gdb调试:如图
上图中我们需关注寄存器EIP eax 关注stack的变化: 接下来利用命令 s 进入func函数:
上图中我们输入 aaaaaaaa的值 : 接下来查看栈区内存:
通过对栈区内存的查看我们很容易得到 overflowme首地址与 key 相差52字节。因此我们只需要进行key 值得覆盖即可完成正确读取flag文件
复制bof.c的代码进行在kali上进行 编译运行进行调试的时候会发现如下图的情形:
key和 overflowme的首地址相差48字节。这可能跟gcc的版本,操作系统内核等有关。
python -c (print "'A' * 52 + '\xbe\xba\xfe\ca'") -cat | nc pwnable.kr 9000
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
- [分享]简单后门分析 5532
- [分享]cve-2012-0158两种poc分析 7830
- [求助]windows逆向实习 5417
- [分享]堆溢出研究三 8562
- [分享]堆溢出研究二 9198