One Gadget

Reading time: 3 minutes

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks

基本信息

One Gadget 允许获取一个 shell,而不是使用 system"/bin/sh"One Gadget 将在 libc 库中找到一些方法来获取一个 shell (execve("/bin/sh")),只需一个 地址
然而,通常会有一些限制,最常见且容易避免的限制是 [rsp+0x30] == NULL。由于你控制 RSP 中的值,你只需发送一些额外的 NULL 值,以避免该限制。

python
ONE_GADGET = libc.address + 0x4526a
rop2 = base + p64(ONE_GADGET) + "\x00"*100

要使用 One Gadget 指定的地址,您需要 添加 libc 加载的基地址

tip

One Gadget 是 任意写入 2 执行技术极大帮助,并且可能 简化 ROP ,因为您只需调用一个地址(并满足要求)。

ARM64

github 仓库提到 ARM64 受该工具支持,但在 Kali 2023.3 的 libc 中运行时 找不到任何 gadget

Angry Gadget

来自 github repo:受 OneGadget 启发,该工具用 python 编写,并使用 angr 测试执行 execve('/bin/sh', NULL, NULL) 的 gadget 的约束
如果您已经用完了 OneGadget 的 gadget,Angry Gadget 提供了更多复杂约束的选择!

bash
pip install angry_gadget

angry_gadget.py examples/libc6_2.23-0ubuntu10_amd64.so

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks