pwn #1

BackBox

Katılımcı Üye
3 Tem 2007
940
2
Kartepe
Basit bir buffer overflow işlemi
Yapmanız gerekenler,​
1-)Dosyayı inceleyip taşmanın olduğu kısmı ve atlama yapacağınız fonksiyonu bulmak
2-)Bu verileri kullanarak uygulamayı sömürecek exploit kodunu yazmak
3-)Verdiğim ip ve portta bu uygulama çalışmakta yazmış olduğunuz exploit kodu ile direk shelle düşüp "/home/ctf/flag" dosyasının içerisindeki flagı okumak...
Herkese kolay gelsin.​


Dosya
Virüstotal
Bağlantı adresi ve port

0.tcp.ngrok.io 19297




Çözüm

Kimsenin ilgisini çekmediği için yüzeysel anlatacağım...
Öncelikle bu dosya hakkında bir kaç bilgi edinelim...

ZKCiUU.png


32 bit GNU/Linux uygulamasıymış peki ne gibi korumaları var.

LXEjO1.png


Bu korumalar hakkında detaylı bilgiyi google amcadan alabilirsiniz...

Şimdi ise dosyamızı inceleyelim hangi kısma atlamamız gerekli açık nerede oluşuyor falan filan...

Dc8auA.png


Adı üzerinde buffer overflow, örnekte gets ile alınan verinin atanan değişkenin alacağı değerden yüksek olmasından dolayı artan verinin stack'a yazılması. Durum daha kötü anlatılamazdı galiba...Burada register'ın ne işe yaradığını google amcadan öğrenebilirsiniz.Bizim eip register'i ile işimiz eip register'i programın akışını kontrol eder her girdiği fonksiyon da bir önce ki fonksiyona geri dönmek için stack'a adresini yazar, biz de bu kısmı değiştirerek programın akışını istediğimiz gibi şekil vereceğiz.
Bu örnekte shell kodla uğraşmamamıza gerek yok secure fonksiyonun incelediğiniz de beyniniz de simşekler çıkmış gözleriniz parlamış olmalı...

Cqtbwl.png


burada direk terminal'i çalıştırdığını göreceksiniz, programın akışını buraya yönlendirip program üzerinden direk shell'e düşeceğiz.

k2iklK.png


0x0804863a adresine yönlendirmemiz gerekiyor, Bu kısmı halletiğimize göre şimdi fuzzy işlemine geçip taşmanın olduğu boyutu öğrenelim. Bu iş için işi uzatmadan met@sploit reis'ten yardım alacağım, öncelikle pattern_create ile 500 karakter uzunluğunda bir string oluşturacağım.

fFjRDN.png


gdb'yi çalıştırıp ve stringi girelim...

2nBfqj.png

AKJnad.png


Göründüğü gibi taşma oldu eip registerina yazılan veriyi alıp met@sploit'in reisin pattern_offset'ini kullanıp kaç karakterden sonra eip üzerine yazdığını öğrenelim...

wo28FA.png


112 karakterden sonra eip üzerine yazıyormuş şimdi python'u kullanıp belirtilen uzunluktan bir string oluşturup little endian'e göre adresi yazalım ve test edelim çalışıyor mu diye...Yine google amca'dan öğrenebilirsiniz little ve big endian nedir diye...

K5N0qA.png


Bu haliyle de sunucuya bağlanıp flag değerini alabiliriz.

uONEbH.png


Her ne kadar flagı almış olsak ta python ile exploitini yazmadan olmazdı...

fDJ208.png


 
Moderatör tarafında düzenlendi:

Ultra723

Kıdemli Üye
14 Mar 2013
2,721
3
sitemap.xml
Ellerinize sağlık, bilgim olmadığı için hiç soru sorma girişiminde de bulunmadım fakat detaylı bir inceleme fırsatı buldum teşekkürler :)
 

xdxd

Yeni üye
29 Mar 2008
3
0
Konuyu ana sayfada görünce bir an başka birisi çözdü sandım :D
Eline emeğine sağlık hocam.
 
Son düzenleme:

Hichigo

Uzman üye
30 Ağu 2015
1,190
42
github.com/tarik0
Hocam üstlerde olsaydı cidden görüp denerdim de ilk kez okuyorum şu an konuyu :D Ama buffer-overflow çok hoş bir exploit türü birdaha yaparsanız katılmak isterim.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.