ROP
ROPgadget学习记录
主要是一段时间不用就忘记了,百度太麻烦了,记一下。
(不知道哪扒的)
ROPgadget支持 x86, x64, ARM, ARM64, PowerPC, SPARC和MIPS架构下的ELF/PE/Mach-O文件格式。 ## 工具安装 安装pwntools自带 ## 基本用法 ``` <pre class="wp-block-code">```bash usage: ROPgadget.py [-h] [-v] [-c] [--binary <binary>] [--opcode <opcodes>] [--string <string>] [--memstr <string>] [--depth <nbyte>] [--only <key>] [--filter <key>] [--range <start-end>] [--badbytes <byte>] [--rawArch <arch>] [--rawMode <mode>] [--rawEndian <endian>] [--re <re>] [--offset <hexaddr>] [--ropchain] [--thumb] [--console] [--norop] [--nojop] [--callPreceded] [--nosys] [--multibr] [--all] [--noinstr] [--dump] ``` ``` ### <a></a>参数 ```
```bash
-h, --help 显示帮助文档
-v, --version 版本号
-c, --checkUpdate 检测新版本是否可用
--binary 指定二进制文件进行分析
--opcode 在可执行段中查找opcode
--string 在可读的段中查找字符串
--memstr 查找单个byte在所有的可执行段中
--depth 搜索引擎的深度
--only 只显示特别的指令
--filter 过滤特定指令
--range 在地址之间寻找(0x...-0x...)
--badbytes 拒绝特定指令在gadget的地址下
--rawArch 指定文件架构
--rawMode 指定源文件的mode
--rawEndian 指定源文件的endianness
--re 正则表达式
--offset 指定gadget的地址偏移
--ropchain ROP chain的生成
--thumb 在ARM架构下使用搜索引擎thumb 模式
--console 使用交互终端对于搜索引擎
--norop 禁止ROP搜索引擎
--nojop 禁止JOP搜索引擎
--callPreceded 仅显示call-preceded的gadgets
--nosys 禁止SYS搜索引擎
--multibr 允许多分枝gadgets
--all 禁止删除重复的gadgets,即显示所有
--noinstr 禁止gadget指令终端打印
--dump 输出gadget bytes
```
```
## 用法示例
寻找控制寄存器的gadgets:
```
```bash
$ ROPgadget --binary --only 'pop|ret' | grep
```
```
寻找保存`int80`的地址:
```
```bash
$ ROPgadget --binary --only 'int'
```
```
寻找保存`'/bin/sh'`的地址:
```
```bash
$ ROPgadget --binary --string '/bin/sh'
```
```
使用:
ROPgadget --binary rop --only 'pop|ret' | grep 'eax'
查找可存储寄存器的代码
ROPgadget --binary rop --string "/bin/sh"
查找字符串
ROPgadget --binary rop --only 'int'
查找有int 0x80的地址
命令: ROPgadget --binary 文件名 --only "pop|ret" | grep rdi
命令: ROPgadget --binary 文件名 --only "pop|ret" | grep rsi
命令: ROPgadget --binary 文件名 --only "pop|ret"
命令: ROPgadget --binary 文件名 --sting '/bin/sh'
命令: ROPgadget --binary 文件名 --sting '/sh'
命令: ROPgadget --binary 文件名 --sting 'sh'
命令: ROPgadget --binary 文件名 --sting 'cat flag'
命令: ROPgadget --binary 文件名 --sting 'cat flag.txt'
ROPgadget --binary ./pwn --only "pop rdi ret" | grep rdi