格式化字符串走过的坑 pwn109
今天做的一道题有一个坑我调试半天终于打通了,格式化字符串的坑,确实不少,东西也比较多容易忘记,怎么说呢,功夫在平时,经验少了
老规矩先看一下保护
Full RELRO意味着got不能修改也就是不能通过格式化字符串漏洞来改got表,但是nx保护关闭了,也就是我们可以通过修改返回地址到我们写的shellcode上就好了
iad打开
选项2printf打印你写的数据(格式化字符串漏洞)选项1是往栈上写数据,而且他还把栈地址给你了,就不需要额外泄露了
首先计算一下我们输入的数据偏移
那既然有栈地址了还有偏移了直接构造payload
但是却失败了,怎么回事,难道我手工改失败了用工具再试一遍
依旧失败,这里我选择一步步去调试了,我首先怀疑返回地址填充的数据不够,因为ida静态毕竟没有动态更能体现返回地址的问题
奇怪的是返回地址是正确的,然后我选择3退出的时候看一下返回地址
发现返回地址并不是刚刚的地址而是这个地址,那么我们把找到的ret_addr + 0x10
成功了!!
也就是说刚刚手改是正确的,这里我建议最好自己手改几次,对这个原理理解透彻,才能更好的学习,只会不停的用工具,而不懂原理这样的学习是没有太大意义的
格式化字符串走过的坑........