Today's Learning

CTF çözdüğüm sıralarda öğrendiğim ufak tefek ama kritik bilgileri unutmamak maksadıyla burada paylaşıyorum.

Bugün neler öğrendim
  • Bir string'in boyutu değiştiğinde bellekteki adresi de değişir. 
  • Debugger ile bir fonksiyonu incelemeye başlamadan önce fonksiyonun stack frame'ini öğren. Bunu bilmek sana stack'i analiz ederken kolaylık sağlar.
  • Bir uygulama, dosya çağıracağı vakit dosyayı aramaya başlayacağı yer uygulamanın çalıştırıldığı dizindir. 
  • Bir uygulamayı analiz ederken _init_ ve _finit_ fonksiyonlarını analiz etmekte fayda var. Böylece program açıldığı ve kapandığı sırada hangi işlemler yapıldığını bilebiliriz.. 
  • Bellek taşırma zafiyetini istismar ederken şayet stack'te yeteri kadar buffer alanı yoksa, shelcode'un başına sub esp, 0xN yönergesini yerleştirerek gerekli buffer alanını tahsis edebiliriz. (N: bize gereken byte miktarının hexadecimal karşılığı)
  • Bellek taşırma zafiyetini istismar ederken şayet stack'te yeteri kadar buffer alanı yoksa ve yukarıdaki çözümü kullanmamız olanaksız ise asıl shellcode'umuzu işaretleyerek (STRING + shellcode) farklı bir parametre aracılığıyla belleğin farklı bir alanında saklayıp, ufak buffer alanımızda ise Egg Hunter Shellcode umuzu çalıştırarak zafiyeti istismar etme imkanı elde edebiliriz. (bkz: Egg Hunting Technique in Buffer Overflow)

Yorumlar

Bu blogdaki popüler yayınlar

DKHOS - Rev300 Çözümü

Part 1: Tersinden Tersine Mühendisliğe Giriş

Bir Güvenlikçi, Virüs ile Karşılaşırsa