One Gadget

Reading time: 4 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

基本情報

One Gadget は、system"/bin/sh" を使用する代わりにシェルを取得することを可能にします。One Gadget は、libcライブラリ内でシェルを取得する方法 (execve("/bin/sh")) を1つのアドレスを使用して見つけます。
しかし、通常はいくつかの制約があり、最も一般的で回避しやすいものは [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 チェーンを簡素化する可能性があります。なぜなら、1つのアドレスを呼び出すだけで済み(要件を満たす必要があります)。

ARM64

githubリポジトリは、ARM64がツールによってサポートされていると述べていますが、Kali 2023.3のlibcで実行すると、ガジェットが見つかりません

Angry Gadget

githubリポジトリから: OneGadgetに触発されたこのツールはpythonで書かれており、angrを使用してexecve('/bin/sh', NULL, NULL)を実行するガジェットの制約をテストします。
OneGadgetから試すガジェットがなくなった場合、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) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする