STACK BUFFER OVERFLOW - Vuln Hub CTF Barinpan

Описание к видео STACK BUFFER OVERFLOW - Vuln Hub CTF Barinpan

Vuln Hub Link : https://www.vulnhub.com/entry/brainpa...
Code Link : https://dosya.co/wri6p2qx3os7/CTF_Bra...

Stack Buffer Overflow Nedir ?
C ve Türevi ile yazılan programlarda hafıza kontrolü kullanıcıya bırakıldığı için programlarda yapılan bazı hatalardan dolayı bellek için ayrılmış bir yere daha fazla veri yazılması ile programın kısa süreli sapıtması ve akışın değişmesiyle son bulan açıklıklara bellek tabanlı STACK taşması açıklıkları denir.

Belleğe 8 baytlık veri girişi ayrılmış ise biz 16 baytlık bir veri giriş yaparsak bellek taşar. EIP değerinde taşma olacağından dolayı program çökecek. Eğer EIP program içinde uygun bir yere yönlendire bilirsek STACK içerisinde SHELLCODE (Exploit ) yaza biliriz.

Exploit Ne Demek ? : Exploit kodu hedef işletim sistemini ele geçirmek, yetki yükseltmek ya da hedefi servis dışı bırakma amaçlı yazılmış kodlara verilen genel addır.

Shell Code Ne demek ? : Hedef sisteme de kod çalıştıra bilemek için kullanılan makine diline çevrilmiş kod kümesidir.

Ram (Random Acces Memory)
Bilgisayar içerisinde rastgele erişimli bellek olarak da kullanılan bir yapıdır . Bir tür veri depolama alanı olarak kullanıla bilmektedir. Veri depolama derken sistemde deki geçici verilerin depolan masıdır. Fizikse donanımın gücü kesildiğinde ram içerisindeki tüm verileri silinir.
Bilgisayarda bir program çalıştığı zaman, programın makine kodlarına çevrilmiş hali ram içerisine yerleştirilerek çalışmaktadır, Ram harddiskden çok daha hızlı çalışan bir yapıdır.

Ram Bölümleri
STACK : Yerel hafıza değişkenleri dönüş adresi ve EBP(İlerisinde açıklanacak) değeri bur da saklanır.(LIFO)Önce giren sonra çıkar mantığı ile çalışır. ESP Stack bölgesinin en üst noktasını gösterir
HEAP : Dinamik hafıza alanı ayırmak için kullanılan komutlar ile ayrılan bölge heap bölgesidir
.BSS : içerisine herhangi bir değer atanmamış global ve statick değişkenler burada saklanır
.DATA : İçerisine herhangi bir değer atanmış global ve statick değişkenler bur da saklanır
.CODE(.Text) : Program kodlarının binary(Makine diline çevrilmiş) hali bur dadır.

Biz exploit geliştirme kısmında head ve stack yapılarına odaklanacağız

CPU (Central Processing Unit)
Merkezi yönetim sistemi
CPU, bir bilgisayarın beynidir. Bir bilgisayar içerisinde çalışan bir programın talimatlarını uygulayan, giriş çıkış birimleri arasında iletişim kurarak mantıksal, aritmatik ve kontrol işlemlerinin gerçekleştiren bir elektrik devresidir. Hesaplama işlemleri bu bir mi üzerinde gerçekleştirir.
CPU üzerinde bulunun bazı kayıt ediciler(Registers) hafızadaki yerleri belirleme aritmetik işlemler, hafıza yazma, hafızadan okuma yapma,döngü kurma gibi çeşitli işlemler için kullanılmaktadır.

Kayıt ediciler (Registers)
Genel amaçlı kayıt ediciler : EAX,EBX,ECX,EDX
Segment kayıt ediciler : CS,DS,SS,ES,FS,GS
Pointer kayıt ediciler : EIP,EBP,ESP
İndex Kayıt ediciler : ESI,EDI
Kontrol Kayıt edicileri : CR0,CR1,CR2,CR3,CR4

ESI(Extended Source Index) : Karakter yada döngü işlemleri sırasında okuma işlemi yapılacak olan yerini adresini gösterir
EDI(Extended Destination Indicator) : Karakter yada döngü işlemleri sırasında yazma işlemi olan yerini adsresini gösterir
EIP : Bir sonraki çalışacak olan komuutn adresini saklar
EBP : Stackte rEFERANS NOKTASO OLUŞTURU
ESP : Stack bölgesinin en üst noktasını gösteriri

TEMEL ASSAMBLY KODLARI
NOP : Hiçbir işlem yapma komutu STACK alanını doldurmak için kullanılır
"\x90"

MOV : Kaynaktan hedef veri taşımak için kullanılır
mov AX,1234h : 1234h değerini AX yazmacısının içerisine koyar

XCHG : İki değeri karşılıklı olarak değiştirmek için kullanılır
mov AX,1234h
mov bX,11111
xchg AX,BX

PUSH : STACK bölgesine veri koymak için kullanılan bir komut
mov ax 1234,PUSH ax

POP : push ile stack bölgesine konan veri POP ile stack bölgesinden çıkartılır

Veri Tipleri
BİT : 2'lik sayı sistemi 0,1
NUBBLE : 4 Bitlik bilgiye eşit
BAYT : 8 Adet bittden meydana gelen yapı
WORD : 16 Bitlik bilgiye eşittir
DDouble : Double word iki ayrı Double birleşesi il meydana gelir. 32 bit'lik bilgi

Kötü Karakter Tespiti :
21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2F 30
31 32 33 34 0A 0A 37 38 39 3A 3B 3C 3D 3F 40

Fark ettiyseniz 35 36 olması lazım ama 0A 0A olmuş bunlar kötü karakterlerdir(35,36) AMA ikisi de kötü karakter değil sadece 35 değeri kötü karakterdir 36 kendinden önceki bozuk olduğu için bozuldu

0:01 Ctf kurulumu
0:53 Bilgi toplama
3:53 Fuzzing
4:28 Ofset
5:02 Badchars
6:18 Exploit
8:58 Yetki yükseltme

Vuln Hub : https://bit.ly/3JByfIV
Buffer Overflow : https://bit.ly/3tZCPd2
Web Hacking : https://bit.ly/3JtvjOi
Adli Bilişim : https://bit.ly/3Dge28P
Network Hacking : https://bit.ly/3K65Drf

Kullanılan Müzikler :
The Witcher 3 Wild Hunt - Geralt of Rivia Extended
The Witcher 2 Score - Dwarven Stone Upon Dwarven Stone

Eğitim amaçlı siber güvenlik ve hacking ile ilgili videolar paylaşıyorum amacı dışında kullanılması halinde tüm sorumluluk kullanan kişiye aittir.

Комментарии

Информация по комментариям в разработке