LibcSearcher--匹配libc版本的神器
文章目录**一、简介****二、安装****版本一:本地判断libc的方法****版本二:在线使用webAPI的方式****三、关于本地libc文件的更新问题****四、使用方法**一、简介LibcSearcher是python的一个库,用于解决pwn中不明libc版本的情况,可以根据泄露的某函数地址,推测服务端使用的libc版本,是做题必备的神器。根据网上的版本,我总结两个可以利用的方法二、安装
一、简介
LibcSearcher是python的一个库,用于解决pwn中不明libc版本的情况,可以根据泄露的某函数地址,推测服务端使用的libc版本,是做题必备的神器。
根据网上的版本,我总结两个可以利用的方法
二、安装
版本一:本地判断libc的方法
使用原作者的版本即可,安装指令如下
git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
sudo python setup.py develop
正常来说,这时候本地已经有了一些libc文件,存放在安装目录/LibcSearcher/libc-database/db
中,注意我们这个版本支持的语言是python2
版本二:在线使用webAPI的方式
这里关联到另一个大佬的git项目,这个项目支持的ptthon语言是python3,安装python3-pip,然后使用如下指令安装即可
pip3 install LibcSearcher
三、关于本地libc文件的更新问题
我自己在做题的过程中,发现版本一的库不是很全,所以需要用程序更新一下,最原始的方法就是删掉已经有的库重新下载,当然这里要花费很多的时间,调用一个git项目,指令如下:
cd LibcSearcher
rm -rf libc-database
git clone https://github.com/niklasb/libc-database.git
cd libc-database
./get ubuntu
这个时候大多数人应该会碰到问题。
Will download or update for:
Requirements for download or update 'ubuntu' are not met. Please, refer to README.md for installation instructions
看说明文档,我们在执行脚本的时候需要几个必须安装的软件(PS:我的系统是ubuntu)
我们需要对general和debian-base每一个指令进行测试是否已经安装,具体可以使用xxx --version
测试,我这里是zstd没有,使用apt install zstd
安装即可,然后执行./get ubuntu
四、使用方法
很简单,直接上代码了,相信都能看懂
from pwn import *
import pwnlib
from LibcSearcher import *
if __name__ == '__main__':
conn = process("./pwn")
...
...
leak_addr = conn.recv(10)
__libc_start_main = int(leak_addr,16) #假如这里泄露了__libc_start_main函数的地址
libc = LibcSearcher('__libc_start_main',__libc_start_main) #根据函数名和函数泄露的地址进行搜索,可能有多个结果需要用户自己选择
libc_base_addr = __libc_start_main - libc.dump('__libc_start_main') #计算libc的基址
system_addr = libc_base_addr + libc.dump('system') #计算system函数的地址
更多推荐
所有评论(0)