Kayıtlar

Temmuz, 2015 tarihine ait yayınlar gösteriliyor

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

Exploit Analizi

Zamanında yabancı bir forum için yazdığım bir yazıyı arkadaşım Türkçe'ye çevirip yayımlamıştı. Faydalı bir yazı olduğunu düşündüğümden burada da paylaşmak istiyorum. Bugün sizinle bir exploitin işleyişini anlamak ve kullandığı güvenlik açığı hakkında daha fazla bilgi edinmek amacıyla exploit analizi yapacağız. Exploit analizi yapabilmek en az exploit geliştirmek kadar önemli bir konudur. Bazen exploit geliştiricileri zafiyet hakkında yeterli bilgi vermeyebilir veya siz zafiyet hakkında daha fazlasını bilmek isteyebilirsiniz. Exploit analizi yapabilmek, bu durumlarda yararlı olacaktır. Ayrıca exploitlerin genel anlamda nasıl çalıştığını anlamanıza da katkı sağlayacaktır. Exploit geliştirmede kullanılan en yaygın dillerden bazıları: Python, Perl, Ruby, PHP, C Bu dillerden en az birini bilmekte fayda var. WordPress’i ele geçirmek için PHP dilinde yazılmış basit bir RFU (uzaktan dosya yükleme) exploit’ini inceleyeceğiz. Hadi başlayalım. Analiz edeceğimiz exploit: http://1

GDB ile Vakit Öldürmeceler

Resim
Dün GNU Debugger ile yaptığım alıştırmalar sırasında öğrendiklerimi gerek tekrar için gerekse geçerken gören olursa onlarda öğrensinler diye buraya yazıyorum. Herşey arkadaşımla OverTheWire'ın Narnia level 5 sorusunu çözerken başladı. #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char **argv){ int i = 1; char buffer[64]; snprintf(buffer, sizeof buffer, argv[1]); buffer[sizeof (buffer) - 1] = 0; printf("Change i's value from 1 -> 500. "); if(i==500){ printf("GOOD\n"); system("/bin/sh"); } printf("No way...let me give you a hint!\n"); printf("buffer : [%s] (%d)\n", buffer, strlen(buffer)); printf ("i = %d (%p)\n", i, &i); return 0; } Bizden isteneni gerçekleştir