Background Image

BLOG

DKHOS - Reverse 200 - Yaşandı bitti saygısızca
16 Şubat 2018 CTF

DKHOS - Reverse 200 - Yaşandı bitti saygısızca


Soru Açıklaması: 

Pelinsu'nun ailesi Pelinsu kaybolduktan sonra ilk etapta Mahmut'u suçlamışlardır. Hatta Pelinsu'nun intihar ettiğinden bile şüphelenmektedirler. Oysa ki Mahmut Pelinsu'yu çok iyi tanımaktadır ve böyle bir hata yapmayacağını da çok iyi bilmektedir.

Sorunun Çözümü:

Bu soruda yarışmacılara 519 byte lık "data" adında bir dosya verilmektedir. Sorununu reverse kategorisinde olduğundan yola çıkarak yarışmacıların verilen dosyayı bir disassembler a atmaları beklenmektedir. Dosyaya disassemler yardımı ile bakıldığında başlangıcındaki instruction ların anlamlı decryption loop pattern ni olduğunu görmeleri beklenmektedir. Shellcode un devamının encrypted olmasından ötürü gerye kalan instrcution lar anlamsız gözükmektedir.

Verilen dosya shellcode olarak çalıştrıldığında decryption rutini sonlandıktan sonra yarışmacıları bir message box karşılıyor.

Çıkan mesajda "SENDE OLANI SANA KOYUCAM ! HAZIRMSIN ?" yazıyor. Ok butonuna basıldığında ise hiçbir şey olmadan kod sonlanıyor. Yarışmacılar shellcode u çalışma aşamasında bir debugger yardımı ile incelediklerinde çıkan message box ın Ok butonuna basıldıktan sonra gerçekleşen bir compare instruction ı görecektir.

Bu noktada shellcode basılan butona dayalı olarak Windows un MessageBox fonksiyonunun döndürdüğü değerin "Yes" anlamına gelen 0x06 olup olmadığına bakıyor.

Yarışmacılar debugger üzerinde EAX register değerini değiştirerek veya compare işleminin yapıldığı kısımı patch leyerek shellcode un normalde zıplamadığı kısma geçmelidirler. Bu kısımda başka bir decryption rutini daha görecekler decryption aşamasından sonra başka bir message box sorunun flag ini ekrana basıyor.