writeup_level2_pwn

属于是level0的升级版,没啥可查的,直接ida:

image-20220224164752204

image-20220224164800080

可以看到,依然是有缓冲区溢出漏洞的一个函数,buf数组的大小转换成十六进制也就0x88,却能读入0x100的数据。

依然是通过溢出,对函数的返回地址进行覆盖:

image-20220224165046553

进入调用函数system,然而system函数需要一个参数的地址(即/bin/sh)字符串的地址,我们没有该字符串,无法虚空调用,只能在程序的字符串列表中进行寻找:
image-20220224165329105

view-subview-string可以看到系统贴心的准备了:

image-20220224165416046

现在我们就可以在调用_system函数时,通过缓冲区的覆盖把字符串的地址也提前覆盖进去:

创作一下脚本:

image-20220224171047696

行!

cyberpeace{40fb2960396105316b3733bd0c6cf1fd}