One Gadget

HackTricksのサポート

基本情報

One Gadgetは、systemと**"/bin/sh"を使用せずにシェルを取得することを可能にします。One Gadgetは、libcライブラリ内でシェル(execve("/bin/sh"))を取得する方法を見つけ、たった1つのアドレス**を使用します。 ただし、通常、いくつかの制約があります。最も一般的で回避しやすい制約は、[rsp+0x30] == NULLのようなものです。RSP内の値を制御できるため、さらにNULL値を送信して制約を回避するだけです。

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

One Gadget が示すアドレスには、libc がロードされているベースアドレスを追加する必要があります

One Gadget は任意の書き込みを実行するテクニックに大きな助けとなり、ROP chains単一のアドレスを呼び出すだけで(かつ要件を満たすだけで)簡略化するかもしれません。

ARM64

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

Angry Gadget

github リポジトリ から: OneGadget に触発され、このツールは Python で書かれており、execve('/bin/sh', NULL, NULL) を実行するガジェットの制約をテストするために angr を使用します。 One Gadget から試すガジェットがなくなった場合、Angry Gadget はより複雑な制約を持つ多くのガジェットを提供します!

pip install angry_gadget

angry_gadget.py examples/libc6_2.23-0ubuntu10_amd64.so
HackTricksのサポート

Last updated