radare2: Debugging

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Gbmdpof

Kıdemli Üye
23 Eyl 2016
2,001
11
Geçen hafta katılım sağladığım BCACTF'te bir soru için debugger kullanmak gerekiyordu. Önce gdb kullanmayı düşünsem de sonra daha önceden merak saldığım fakat pek kullanım fırsatı bulmadığım radare2'yi bu soruda kullanmak istedim.

radare2 hakkında açtığım ilk konuya ulaşmak için tıklayın.

Benim bu CTF sorusunda kullandığım işlemlere geçmeden önce radare2 ile debugging işleminden biraz bahsedelim.

Öncelikle, bir programı debugging modunda açmak için radare2'yi -d seçeneği ile başlatmanız gerek. Örnek olarak:
Kod:
r2 -d /bin/ls

Debbugger oturumunu başlattıktan sonra ise bu komutları kullanabilirsiniz:
  • db flag - flag'e bir breakpoint yerleştirir, bu flag bir fonksiyon adı veya adres olabilir
  • db - flag - flag'deki breakpointi kaldırır
  • db - breakpointlerin listesini gösterir
  • dc - programı çalıştırır
  • dr - register'ların değerlerini gösterir
  • ds - step into
  • dso - step over
  • dbt - backtrace'i gösterir (backtrace, programın o an bulunduğu yere nasıl geldiğini gösterir)
  • dm - memory map'leri gösterir
  • ood - dosyayı yeniden debug modunda açar

Şimdi ise bu CTF'te karşıma çıkan soruya bakalım. Verilen programı çalıştırınca aşağıdaki çıktıyı veriyor:
Kod:
$ ./executable-ubuntu
Welcome to the lottery!
So now we're going to pick a ginormous number!
If it's 1, you win!
Your number is 1804289383!
Try again next time!

Eğer dediği şeyi yapıyorsa, rastgele bir sayı oluşturup bu 1 ise bize flag'i verdiğini anlayabiliriz. Bunun analizi için dosyamızı debugging modunda radare2 ile açarak başlayalım: r2 -d executable-ubuntu

Önce aaa komutu ile analiz edelim ve ardından pdf @ main komutu ile main fonksiyonunu disassemble edelim.

Z5WvPA.png


İşaretlediğim yerde ebx ile 1'in karşılaştırıldığını görebiliyoruz. Yani buraya bir breakpoint koyup burada ebx register'ının değerini 1 yaparsak bu cmp işlemi bizim istediğimiz şekilde olacaktır. Bunun için db ile breakpoint yerleştirip, dc ile programı devap ettirip, breakpoint'e geldiğinde ise dr ebx=0x1 ile ebx'in değerini 1 yapabiliriz.

1p41qp.png


Gördüğünüz gibi, kazandığımızı söyledi.
 

erdemoztutkac

Yeni üye
21 Haz 2019
3
0
Hex ve ascii chip yazma sorunu

Merhaba emeğinize sağlık.I code slı Ascii ve hex kodları ile alakalı çözüm aryorum yardımcı olabilirmisiniz?
Not:199D7B6B000104E000000000000000002A1600007B911CD897ADEF00D60FD3D991D85B58898F30CA07278D4144469D953766729E90C81ED246873FD45C9C0000:mutsuz
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Ü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.