18 个稳定版本
3.3.1 | 2023 年 12 月 30 日 |
---|---|
3.3.0 | 2022 年 12 月 12 日 |
3.2.0 | 2022 年 2 月 15 日 |
3.0.2 | 2021 年 8 月 15 日 |
1.2.1 | 2019 年 11 月 17 日 |
#311 in 开发工具
每月下载量 254
40KB
899 行
pwninit
自动化启动二进制漏洞挑战的工具
功能
- 设置挑战二进制文件为可执行
- 下载一个可以无segfault加载提供的libc的链接器(
ld-linux.so.*
) - 下载调试符号并去除libc的strip
- 使用
patchelf
修复二进制文件以使用正确的RPATH和解释器 - 填写pwntools solve脚本模板
用法
简短版本
运行 pwninit
详细版本
在包含相关文件的目录中运行 pwninit
,它将检测哪些是二进制文件、libc和链接器。如果检测错误,可以使用 --bin
、--libc
和 --ld
指定位置。
自定义 solve.py
模板
如果您不喜欢默认模板,可以使用自己的。只需指定 --template-path <path>。有关模板格式,请参阅 template.py。可以使用
--template-bin-name
、--template-libc-name
和 --template-ld-name
自定义 exe
、libc
和 ld
绑定名称。
持久化自定义 solve.py
您可以通过在 ~/.bashrc
中添加别名来使 pwninit
自动加载您的自定义模板。
示例
alias pwninit='pwninit --template-path ~/.config/pwninit-template.py --template-bin-name e'
安装
Arch Linux
从 AUR 安装 pwninit
或 pwninit-bin
。
下载
使用cargo
运行
cargo install pwninit
这会将二进制文件放置在~/.cargo/bin
。
请注意,构建需要openssl
、liblzma
和pkg-config
。
示例
$ ls
hunter libc.so.6 readme
$ pwninit
bin: ./hunter
libc: ./libc.so.6
setting ./hunter executable
fetching linker
https://launchpad.net/ubuntu/+archive/primary/+files//libc6_2.23-0ubuntu10_i386.deb
unstripping libc
https://launchpad.net/ubuntu/+archive/primary/+files//libc6-dbg_2.23-0ubuntu10_i386.deb
setting ./ld-2.23.so executable
copying ./hunter to ./hunter_patched
running patchelf on ./hunter_patched
writing solve.py stub
$ ls
hunter hunter_patched ld-2.23.so libc.so.6 readme solve.py
solve.py
:
#!/usr/bin/env python3
from pwn import *
exe = ELF("./hunter_patched")
libc = ELF("./libc.so.6")
ld = ELF("./ld-2.23.so")
context.binary = exe
def conn():
if args.LOCAL:
r = process([exe.path])
if args.DEBUG:
gdb.attach(r)
else:
r = remote("addr", 1337)
return r
def main():
r = conn()
# good luck pwning :)
r.interactive()
if __name__ == "__main__":
main()
依赖项
~11–25MB
~404K SLoC