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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步