超级简单的格式化字符串漏洞 ctfshow10pwn


只有nx 那就不能自己写system binsh了

好在里面啥都有。

这里if条件如果num==16 直接运行程序就可以得到flag所以想办法满足num就可以点进num

在bss段 bss段可写 但是要怎样往里写内容呐
Scanf可以读取用户输入内容 但是要怎样能控制它往想写的地方写东西类
下面有个printf 它直接是输出我们输入的内容 这就是格式化字符串的漏洞

单纯运行一下程序,确实好像有点单纯哈,好了,既然知道是格式化字符串,他也没什么限制,直接找偏移吧

这块要注意 那个(nil)也算一个字节,我是新手,我一开始真不知道,一直以为偏移量是6搁那傻傻改那个脚本 总之这个从aaaa 到0x61616161 偏移量是七

写脚本的话看着很简单 对我而言的话学到的是
首先他是把num 的地址写上去了 在上面aaaa%p。。。中我们可以知道 此时它真正所在的是后面移动7的位置 %7$n就是为了往这个位置写东西 %n会把前面的字节数写入num
中,当然只有等于16时 才能flag 这就需要%12c 这个东西 他是用 来补充字节的 32位中一个地址四个字节 所以补十二个 (空格)soga

也是在ai的指导下 终于get到了 (nil)占偏移量
(nil)占偏移量
(nil)占偏移量!!!!!!!!!!!
