One Gadget
基本情報
One Gadget は、systemや**"/bin/sh"を使用せずにシェルを取得することを可能にします。One Gadget は、libcライブラリ内でシェル(execve("/bin/sh")
)を取得する方法を見つけ、たった1つのアドレス**だけを使用します。
ただし、通常、いくつかの制約があります。最も一般的で回避が容易なものは、[rsp+0x30] == NULL
のようなものです。RSP内の値を制御できるため、さらにいくつかのNULL値を送信して制約を回避すればよいです。
One Gadget が示すアドレスには、libc
がロードされているベースアドレスを追加する必要があります。
One Gadget は、任意の書き込みを実行するテクニックに大きな助けとなり、ROP チェーンを単純化することができます。必要なのは1つのアドレスを呼び出すだけです。
ARM64
github リポジトリによると、ARM64 がサポートされていますが、Kali 2023.3 の libc で実行すると、ガジェットが見つかりません。
Angry Gadget
github リポジトリ から: OneGadget に触発されたこのツールは、Python で書かれており、execve('/bin/sh', NULL, NULL)
を実行するガジェットの制約をテストするために angr を使用します。One Gadget から試すガジェットがなくなった場合、Angry Gadget はより複雑な制約を持つ多くのガジェットを提供します!
Last updated