作为一个萌新,很荣幸能给SU_CTF出道题,各位师傅也是太强了很快就给我秒了
SU_BABY
其实还有其他两个版本,然后由于时间比较匆忙其他两个版本没调试好,导致shellcode考察的比较简单,所以我估摸着会有很多非预期解,师傅们轻点喷
该题主要是模拟了一个病毒特征码检测小程序,总共存在9个功能
该题的主要漏洞是在add_file中存在的逻辑漏洞,而且是无法直接看出来的需要在gdb中调试中得到,填满第一个栈后与后一个栈里面的内容连接在一起经过strlen长度判断为14,那么下次就是x+14的位置读入(x为当前读入位置),合理的控制的话可以直接绕过canary保护
泄露栈地址
利用printf不输入回车会导致后面的内容一起被打印出来,然后将栈地址
利用add_sigID读入,找到栈地址并读入,然后利用display_sigdb打印出来,这里display_sigdb不能直接调用,但因为query_infiles没有break,可通过执行query_infiles进行调用
然后就是进入attack进行构造read和orw即可
1 | from tools import * |
- 本文作者: NEWYM
- 本文链接: http://example.com/2025/01/14/SU_BABY/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!