少女祈祷中...

Ropper

Ropper是ROPgadget在大程序下的替代,有更快的检索速度,pwn手基本上都会使用

比如在某些题目中,我们可以获得libc基址,但是程序中缺失scu等,缺少rop链的条件。迫于无奈,我们只能在libc中寻找以构造rop链,这个时候我们使用Ropper会有相当好的效果

Ropper的命令

安装:

我使用的是kali的wsl安装方式相当简单

1
apt install ropper

运行:

直接运行ropper进入Ropper环境
执行file命令以载入libc文件
2025-02-27-130227.png
在这里我使用的是本机的libc做演示

命令:

gadgets命令会列出所有的gadgets,实在是太多了,所以一般不会这么用。
search可以更加精准的查找相关的指令

2025-02-27-130810.png
当然也可这样使用
2025-02-27-131331.png

semantic命令(实现一定功能的片段)

需要先安装依赖的库

1
2
3
pip3 install z3
pip3 install archinfo
pip3 install pyvex

当然对于使用apt的linux我们使用下面的代码

1
2
3
4
apt install python3-z3
pip3 install --user --break-system-packages archinfo
pip3 install --user --break-system-packages pyvex
#下面的两个是直接强制全局安装

支持的约束命令

1
2
3
4
5
6
7
reg == reg     -  assign register to another
reg == number - assign number to register
reg == [reg] - assign memory to register
reg += number/reg/[reg]
reg -= number/reg/[reg]
reg *= number/reg/[reg]
reg /= number/reg/[reg]

能跑跑小程序,大程序貌似不太跑的出来。
没有找到合适的效果,这里不做演示
实际上可以找到比如

1
semantic rax==0

会给出xor rax rax; ret;的地址这种。