-
-
[原创][分享]Pwn从入门到放弃(三)
-
发表于: 2019-12-30 20:50 7952
-
该题目是plaidctf-2013的一道题,ropasaurusrex
checksec看一下该程序开了哪些保护:
程序为32位小端,保护只开启了NX保护,意味着堆栈不可执行。
运行该程序看看:
待你输入内容后,会给一些的反馈
*第三步:
gdb动态调试一下看看:
可以看到,崩溃在140处,因此可以知道返回地址在144字节处。
同样,将程序丢到IDA中看一下:
发现程序逻辑相对还是比较简单的,在main中,发现sub_80483F4函数中存在可利用的溢出漏洞,另外发现该程序中并没有可利用的system和'/bin/sh',但却存在read和write函数。
溢出思路:
由于程序没有提供libc.so文件,故需要将返回地址覆盖为write@plt,利用write@plt将read@got内容打印出来从而获得libc、system等函数的地址
计算system和'/bin/sh'地址
然后通过gadget指令重新跳转至sub_80483F4再次溢出,将返回地址覆盖
为system,将'/bin/sh'地址部署在相应的参数位置即可
知识点:
GOT(Global Offset Table,全局偏移表)是Linux ELF文件中用于定位全局变量和函数的一个表。
PLT(Procedure Linkage Table,过程链接表)是Linux ELF文件中用于延迟绑定的表,即函数第一次被调用的时候才进行绑定。
延迟绑定,就是当函数第一次被调用的时候才进行绑定(包括符号查找、重定位等),如果函数从来没有用到过就不进行绑定。基于延迟绑定可以大大加快程序的启动速度,特别有利于一些引用了大量函数的程序。
栈布局:
我们可以利用DynELF来轻松获得程序某函数的实际运行地址。
**知识点2:DynELF,是pwntools中有一个很方便的类,可以通过使用该类利用泄露函数,从而获取程序的system、read等函数地址。
最终的EXP代码:
参考:
8d1K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1j5Y4y4Q4x3X3g2A6j5$3S2#2L8Y4q4A6N6g2)9J5k6h3y4G2L8g2)9J5c8Y4c8Z5M7X3g2S2k6q4)9J5k6o6b7J5z5e0x3K6i4K6u0V1x3g2)9J5k6o6q4Q4x3X3g2Z5N6r3#2D9i4K6y4r3k6Y4u0G2L8g2)9K6c8r3q4I4P5Y4R3I4
a42K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2B7K9h3q4F1M7$3S2#2i4K6u0W2j5$3!0E0i4K6u0r3M7q4)9J5c8U0f1&6x3r3u0U0x3h3b7$3j5K6t1&6x3R3`.`.
129K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3u0S2P5h3#2J5P5q4)9J5k6h3#2W2i4K6u0r3x3U0l9I4z5g2)9J5c8U0l9^5i4K6u0r3x3e0W2Q4x3V1k6b7g2@1&6Q4x3U0g2q4y4g2)9J5y4e0R3^5i4K6t1#2b7U0N6Q4x3U0g2q4z5g2)9J5y4f1p5J5i4K6t1#2z5e0S2Q4x3U0g2q4z5q4)9J5y4f1q4q4i4K6t1#2b7U0m8Q4x3U0g2q4y4g2)9J5y4f1u0p5i4K6t1#2z5e0g2Q4x3U0g2q4x3W2)9J5y4e0R3H3i4K6t1#2z5e0c8Q4x3U0g2q4x3W2)9J5y4e0R3H3i4K6t1#2z5e0b7J5x3o6p5K6i4K6u0V1f1r3I4S2K9h3c8o6g2p5k6Q4x3X3c8J5L8%4m8S2M7$3q4#2M7Y4g2K6M7X3g2^5i4K6u0r3
067K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2B7K9h3q4F1M7$3S2#2i4K6u0W2j5$3!0E0i4K6u0r3M7q4)9J5c8U0j5$3x3U0k6S2z5o6j5$3j5h3b7$3y4R3`.`.
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
- [原创][分享]Pwn从入门到放弃(五) 12298
- [原创][分享]Pwn从入门到放弃(四) 17035
- [原创][分享]Pwn从入门到放弃(三) 7953
- [原创][分享]Pwn从入门到放弃(二) 9394
- [原创][分享]Pwn从入门到放弃(一) 14175