Ropper
Ropper是ROPgadget在大程序下的替代,有更快的检索速度,pwn手基本上都会使用
比如在某些题目中,我们可以获得libc基址,但是程序中缺失scu等,缺少rop链的条件。迫于无奈,我们只能在libc中寻找以构造rop链,这个时候我们使用Ropper会有相当好的效果
Ropper的命令
安装:
我使用的是kali的wsl安装方式相当简单
1 | apt install ropper |
运行:
直接运行ropper进入Ropper环境
执行file命令以载入libc文件
在这里我使用的是本机的libc做演示
命令:
gadgets命令会列出所有的gadgets,实在是太多了,所以一般不会这么用。
search可以更加精准的查找相关的指令
semantic命令(实现一定功能的片段)
需要先安装依赖的库
1 | pip3 install z3 |
当然对于使用apt的linux我们使用下面的代码
1 | apt install python3-z3 |
支持的约束命令
1 | reg == reg - assign register to another |
能跑跑小程序,大程序貌似不太跑的出来。
没有找到合适的效果,这里不做演示
实际上可以找到比如
1 | semantic rax==0 |
会给出xor rax rax; ret;的地址这种。