GUET 2024梦极光pwn2
我们先简单地看一下程序

发现它会跳转到challenge函数

定义了数组buf和v2,v2已经给了初始值,buf用read函数读取
后面用strcmp()将v2和guet555比较,如果相等(返回0)则会执行if段的内容,不相等的话会return result的结果。
然后我们还可以看到有许多函数

现在再回过头来看challenge里面的read函数,发现它其实是栈溢出了,但如果我们尝试用它去解题就会发现是错的

因为buf长度是160,而read只读取0xD0,对于我们发送的exp来说不够长,读不完,所以是EOF
于是把目光转向challenge2,发现里面也有一个read函数溢出,这个够长,可以用它来溢出。

challenge2的返回地址是backdoor,我们点开发现这个后门没什么用

在ida里面找一下system(0x04005A0),找一下bin/sh(无),找一下sh(有)

就是sh藏得有点深,(在里面某个字符段里,需要我们自己去截取),0x04009B7,会往后读取到0或者\x00为止

至此写出exp


浙公网安备 33010602011771号