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 chains を単一のアドレスを呼び出すだけで(かつ要件を満たすだけで)簡略化するかもしれません。
ARM64
github リポジトリによると、ARM64 はサポートされているとされていますが、Kali 2023.3 の libc で実行すると、ガジェットが見つかりません。
Angry Gadget
github リポジトリ から: OneGadget に触発され、このツールは Python で書かれており、execve('/bin/sh', NULL, NULL)
を実行するガジェットの制約をテストするために angr を使用します。
One Gadget から試すガジェットがなくなった場合、Angry Gadget はより複雑な制約を持つ多くのガジェットを提供します!
Last updated