Background Image

BLOG

DKHOS - Reverse 500 - Mühendis olmayana kız vermezler-miş
17 Şubat 2018 CTF

DKHOS - Reverse 500 - Mühendis olmayana kız vermezler-miş


Soru Çözümü :

Soruda obfuscated(karmaşıklaştırılmış) Autoit çalıştırabilir dosyası verilmiştir. Flagi oluşturulacak olan fonksiyonun unconditional jump ile çalışması engellenmiştir. Yarışmacılardan beklenen kod üzerindeki obfuscationın kaldırılması veya kod akışına müdahale edilmesi yolu ile flagin oluşturulmasıdır. Verilen PE dosyasının stringleri incelenerek derlenmiş Autoit kodu olduğu kolaylıkla tespit edilebilinirdi.

Exe2Aut aracı ile Autoit kaynka kodları elde edilebilinmektedir. Exe2Aut aracı data_ ismi ile aynı dizin içerine kaynak kodları çıkartacaktır.

Görselde görüldüğü üzere kaynak kod obfuscate edilmiş haldedir. Bu aşamadan sonra kaynak kod üzerinde yapılcak inceleme ile ilgili fonksiyonların tespit edilmesi gerekmektedir. Yazılımı çalıştırdığımızda ekranda metin kutusu oluşturmaktadır. Autoit dilinde metin kutusu oluşturmak amacıyla MsgBox kullandığı göz önüne alarak MsgBox stringi kaynak kod içerisinde aratılarak ilgili fonksiyon kolaylıkla tespit edilebilinmektedir.

İlgili kısım 6358. satırdan başlamaktadır. Burada dikkatimizi IF blockları çekmektedir. $a19ea80020f değişkeni ile yapılan karşılaştırma sonucunda MsgBoxın oluşturulduğu görülmektedir. Burada programın akışına müdahale ederek 6360. satırdan çalışmaya devam etmesini ve bu durumda ne olacağını görmek istiyoruz. Bunu debugger ile yapabileceğimiz gibi en kolay yolu IF blokları koddan silmek ve yeniden derlemek olacaktır.

Yazılımı bu hali ile derleyip çalıştırdığımızda Calc pencerisinde hızlıca bir işlem yapıldığı ve hesap makinesinin kapatıldığı olacaktır. Sleep içerisindeki değeri 1000000 yapıp kodu tekrar derliyorum böylece yapılan işlemleri yakalayabiliriz.

Uzunca bir sayı oluşmuş ve bu sayıyı oluşturan işlemleri görmek için hesap makinesinde sağ tıklayarak "Show History" seçeneğini şeçmemiz gerekiyor.

Çarpma işlemine kullanılan değerleri elde ettik. İlgili sayıları Ascii değerlere dönüştürdüğümüzde _c0ngr4tul4tions1 flag değerini elde edilmektedir.