Pwn|[PWN]安恒杯2019.2 filesystem

之前一直玩逆向,鉴于逆向和pwn都算同一类,寒假花了点时间补了下。
由于自己太菜,被几个函数误导了好久。。。。最后到点刚好解出来,没
能来得及提交。。。被自己蠢哭了
Pwn|[PWN]安恒杯2019.2 filesystem
文章图片

main函数很简单,各种菜单输入匹配,一眼就看到个B4cKd0oR
可疑的很!更进去看看是啥
Pwn|[PWN]安恒杯2019.2 filesystem
文章图片


看到个system,那不是简单了,立马输入B4cKd0oR,键入ls命令
程序返回了服务器上的文件目录,看到一个flag.txt!!
那直接cat flag.txt不就完了?
当然不行,read函数从标准流中指读取2字节。还不能输入sh开启子shell
欧霍,完蛋。
再看看主函数
Pwn|[PWN]安恒杯2019.2 filesystem
文章图片

格式串漏洞吗?仔细观察程序的其他逻辑,并没又发现可以利用的地方。
但是格式串是个思路。
Pwn|[PWN]安恒杯2019.2 filesystem
文章图片

checksec选项似乎有蹊跷,他也使用了输入缓冲区的地址作为参数
【Pwn|[PWN]安恒杯2019.2 filesystem】跟进函数
Pwn|[PWN]安恒杯2019.2 filesystem
文章图片

逻辑很清楚,首先接受输入索引,检测是否这个文件。
然后通过文件内容构造shell命令获得文件的MD5校验和
snprintf函数显然是个格式串漏洞,%s并没有过滤文件内容
我们选择Edit
选项构造payload
Pwn|[PWN]安恒杯2019.2 filesystem
文章图片

封闭 双引号分号间隔字符串即可。

    推荐阅读