前言
笔者去年给 pwntools 写了一点小功能,让他能在本地离线的场景下根据泄露出来的地址搜索 libc 版本,不用安装其他的库了。现在终于在正式版本 4.15.0 中发布了,这里简单分享一下使用方法。
命令行
fetch:下载 libc-database
1 | pwn libcdb fetch |

第一次使用会询问你是否要在 /var/lib/libc-database 目录初始化,输入 yes 之后自动下载

之后运行相同的命令会更新 /var/lib/libc-database 的仓库代码

使用 pwn libcdb fetch -u xxx 可以下载/更新指定分类的 libc,一般来说 ubuntu 和 debian 就够了

file:查看 libc 的信息
1 | pwn libcdb file xxx |

lookup:搜索偏移
1 | pwn libcdb lookup |
添加 --offline-only 实现离线搜索

hash:搜索指定 hash 的 libc
1 | pwn libcdb hash |

这个功能会默认尝试 unstrip 恢复 libc 的符号,想完全离线需要同时添加 --offline-only --no-unstrip 参数
脚本编写
导入方式
和正常的导入方法一样 import 即可
1 | from pwn import * |
相关接口
search_by_symbol_offsets
1 | from pwn import * |

也可以离线搜索并直接选择 index
1 | from pwn import * |

search_by_hash 系列
有这几个函数,调用方法都是一样的
1 | search_by_libs_id |
这里以 search_by_md5 举例
1 | from pwn import * |

添加如下参数可以完全离线
1 | from pwn import * |
参考资料
更多详细用法参考官方文档