参考多篇blog的一个总结与测试
pwntools
pwntools 是一款专门用于CTF Exploit的python库,能够很方便的进行本地与远程利用的切换,并且里面包含多个模块,使利用变得简单。
可以在github上直接搜索pwntools 进行安装。
基本模块
asm : 汇编与反汇编,支持x86/x64/arm/mips/powerpc等基本上所有的主流平台
dynelf : 用于远程符号泄漏,需要提供leak方法
elf : 对elf文件进行操作,可以获取elf文件中的PLT条目和GOT条目信息
gdb : 配合gdb进行调试,设置断点之后便能够在运行过程中直接调用GDB断下,类似于设置为即使调试JIT
memleak : 用于内存泄漏
shellcraft : shellcode的生成器
asm 汇编模块
这个模块提供一些基本的汇编与反汇编操作,一般可以用linux的objdump以及IDA Pro能够完成基本的需求。
dynelf 模块
还未试过
elf 模块
这是一个静态模块,即静态加载ELF文件,然后通过相关接口获取一些信息,常用接口有:
got 获取指定函数的GOT条目
plt 获取指定函数的PLT条目
address 获取ELF的基址
symbols 获取函数的实际地址(待确定)
使用例子:
1 | (例子) |
gdb 模块
该模块用于调用gdb调试
在python文件中直接设置断点,当运行到该位置之后就会断下
1 | import pwnlib |
rop 模块
用于自动产生ROP链 还不支持X64?
1 | elf = ELF('ropasaurusrex') |
rop.call, 两个参数,第一个是需要call的函数或者一个地址,第二个是函数参数,为list,只有一个参数需要在后面加上一个’,’使其变为list
也可以使用ROPgadget进行gadget搜索
参考
https://pwntools.readthedocs.io/en/stable/
http://brieflyx.me/2015/python-module/pwntools-intro/
http://brieflyx.me/2015/python-module/pwntools-advanced/