Reversing Challenge – Snake

Merhabalar, 

bu yazıda HackTheBox içerisinde bulunan “Snake” isimli reverse challenge çözümünü inceleyeceğiz.

İlk olarak uygulama hakkında bize ipucu vermesi için challenge başlığını inceleniriz. Burada sadece flag formatının belirtildiği görülmektedir.

Daha sonra challenge için paylaşılan zip dosyası indirilir ve herhangi bir arşiv açma aracı kullanılarak içerisindeki dosyaların dışarı çıkartılması sağlanır.

Görüldüğü üzere arşiv dosyası içerisinden “snake.py” ismli bir dosya çıkartılmaktadır. Elde edilen betik dosyasının içeriği aşağıdaki şekildedir.

Uygulama içerisinde, kullanıcıdan alınan kullanıcı adı/şifre bilgilerinin kontrol edildiği görülmektedir.

“42” numaralı satır incelendiğinde, betik içerisinde tanımlı bulunan kullanıcı adı bilgisi ile dışarıdan alınan ifade kontrol edilmektedir. “49” numaralı satır incelendiğinde ise kullanıcıdan alınan şifre bilgisi ile betik içerisinde tanımlı bulunan ifade karşılaştırılmaktadır.

İlk adım olarak betik içerisinde gerçekleştirilecek değişiklikler ile kullanıcı adı ve şifre bilgilerinin elde edilmesi amaçlanmaktadır.

Kullanıcı adı bilgisine erişebilmek için “slither” parametresinin içeriğinin görüntülenmesi gerektiği anlaşılmaktadır. Bu doğrultuda “snake.py” dosyası üzerinde yapılan değişiklikler aşağıdaki şekildedir.

Şifre karşılaştırması işleminde ise karakter-karakter karşılaştırma işlemi yapıldığı görülmektedir. “chars” isimli değişken içerisinde bulunan karakterlerin karşılaştırma kapsamında kullanıldığı anlaşılmaktadır.

İlk bakışta bu değişkenin elemanı yok gibi görünse de, betik içerisinde tanımlı bulunan işlem adımları ile değişken içerisine parametre aktarıldığı tespit edilmektedir.

Görüldüğü üzere “keys” ve “chains” dizileri içerisinde bulunan değerlerin, bir takım işlemler gerçekleştirilerek “chars” dizisine aktarılmaktadır. Bu doğrultuda “snake.py” üzerinde gerçekleştirilen işlemler aşağıdaki şekildedir.

Yapılan değişiklikler sonrasında “snake.py” dosyası çalıştırılır ve aşağıdaki görüntü elde edilir.

Görüleceği üzere kullanıcı adı bilgisi “anaconda” olarak elde edilmektedir. Şifre bilgisi ise “udvvrjwa$$~rs}*s}*k*~|yvv” şeklindedir. Fakat bu bilgiler ile oluşturulan flag değeri sistem tarafından kabul edilmemektedir. Bir sonraki denemede şifre bilgisi “udvvrjwa$$” olacak şekilde flag ifadesi oluşturulmaktadır. Bingo! Flag değeri “udvvrjwa$$” şifre değeri ile kabul edilmektedir.

Yazar: Ahmet Akan

2016 Karabük Üniversitesi Bilgisayar Mühendisliği Mezunu. Kariyerine Uygulama Güvenliği Analisti olarak başladı ve bu alanda görev almaya devam etmekte.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir