time_formatter--UAF
[time_formatter]–UAF
前言
好久没做题了,一直在看链接装载与库,有一说一,这玩意是真的晦涩难懂。最近要开始准备打比赛回来再刷刷题。
这个题挺有意思的,能扩展学习到很多东西。
Find hole
先对文件进行基础的分析
- 64位文件
- 除了PIE没开其他的保护都开了,FORTIFY是缓冲区溢出检查,用来在编译的时候去替换危险函数。
文件逆向
通过分析文件,发现程序就是让我们输入时间,时区,和输出格式,然后调用system函数来运行/bin/data函数来实现功能。
刚开始找了半天hole没找到,看了其他师傅的题解后才找到了。
- 因为输入格式和时区的函数是用的strdup函数,该函数会调用malloc函数分配一个空间,然后返回该指针。
- 在退出的时候,程序是先进行free后判断是否继续退出,会导致format指针存储的空间已经是被free掉了的,然后我们选择调用输入时区的函数,就会分配到刚才format的那段空间,我们就可以用这种方式来绕过format的判断语句。
payload
找到漏洞和利用方法后,我们就可以来写脚本了
1 | from pwn import * |
总结
这个题很有意思,第一次利用UAF漏洞,PWN的道路道阻且长。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Daily Study!