Root Me Web-Server Write Up

PwnLab.Me

Admin
Katılım
21 Ocak 2024
Mesajlar
202
Tepkime puanı
9
Puanları
18
Anıl Doğan tarafından yazılmıştır.

[TR] Root Me Web-Server Write Up​

HTML – Source code​




Merhaba arkadaşlar siteye https://www.root-me.org/ ‘ den ulaşabilirsiniz.

Sayfaya girdikten sonra soruya Challenges > Web-Server kısmından erişebilirsiniz.

1.soru flag
1.soru flag

Sorunun adında verilen ipucundan dolayı Start Challenge dedikten sonra açılan sayfa da CTRL+U ile sayfa kaynağına gittikten sonra en alttaki çubuğu sağa doğru kaydırdığımız da karşımıza flag çıkmaktadır.

Flag = nZ^&@q5&sjJHev0

HTTP – Open redirect​




Gördüğünüz üzere farklı sitelere yönlendirmeler yapıyor. Burp Suit ile araya girip inceledikten sonra url ve parametre olarak url’i md5 encode edilmiş olarak gönderiyor. Biz de bunu kendi isteğimiz doğrultusunda değiştiriyoruz ve flag karşımıza çıkıyor.



2.soru flag
2.soru flag



Flag = e6f8a530811d5a479812d7b82fc1a5c5

HTTP – User-agent​




Soruda admin olmadığımız için erişemediğimizi söylüyor. Burp ile biraz inceliyoruz ve request kısmında

User-Agent diye bir yer görüyoruz. Burayı admin olarak değiştirip send ettikten sonra flag karşımıza çıkıyor.

3.soru flag
3.soru flag



Flag = rr$Li9%L34qd1AAe27



Weak password​




Soruda belirtildiği gibi zayıf bir şifre olduğu yazıyor. Tabii ki akla gelen ilk şey;

kullanıcı: admin, password: admin olarak deniyoruz ve flag karşımıza çıkıyor.



4.soru flag
4.soru flag



Flag = admin



PHP – Command injection​

Bize verilen input ve soruda verilen ipucundan dolayı komutlarla flag bulmamızı istiyor. 127.0.0.1&&ls ile olduğumuz dizinde her şeyi göstersin istiyoruz. Karşımıza index.php diye bir şey çıkıyor. index.php’nin içinde ne olduğunu öğrenmek için 127.0.0.1&&ls&&cat index.php ile içinde ne olduğuna dair bakıyoruz ve kaynak kodunda karşımıza flag çıkıyor.
5.soru flag
5.soru flag
Flag = S3rv1ceP1n9Sup3rS3cure

Backup file​

Adından anlaşıldığı gibi yedek bir dosya olduğunu söylüyor yani bir dosya download edip flagin içinde olduğunu söylüyor. Url’nin sonuna index.php eklediğimiz zaman hiç bir şey değişmediğini görüyoruz dolayısıyla dosyanın adı index.php fakat download etmemiz gerekiyor bu yüzden dosyanın sonuna bir şey ekleyerek bulmaya çalışıyoruz. Uzun denemeler sonucunda tilde işareti olduğunu buldum. Yani url sonuna index.php~ yazdıktan sonra otomatik olarak index.php adında bir dosya iniyor.
Dosyayı notepad++ ile açtıktan sonra karşımıza kullanıcı adı ve şifrenin çıktığını görüyoruz.
6.soru flag
6.soru flag

Karşımıza çıkan kullanıcı adı ve şifreyi web sayfasında girdikten sonra flag’i password olarak veriyor.

Flag = OCCY9AcNm1tj

HTTP – Directory indexing​




Soruda dediği gibi herhangi bir kod kullanmadan diğer dizinlere gidip flag’i bulacağız. Sayfa kaynağın da bize verdiği bilgi;

<!– include(“admin/pass.html”) –>

Url sonuna admin/pass.html ekleyip baktığımız da bize hala aramamızı söylüyor. admin/pass.html sonundaki pass.html silerek admin de ne var diye baktığımızda karşımıza dizinlerin bulunduğu sayfa geliyor.

7.soru flag
7.soru flag



pass.html içinde olmadığını biliyoruz dolayısıyla backup/admin.txt’e geçiş yaptığımız da karşımıza flag veriyor.

Flag = LINUX



HTTP – Headers​




Sayfaya bir istek gönderirken, değeri yok olarak ayarlanmış “Header-Rootme-Admin” adlı bir başlık görüyorum.

Request kısmında Headers’a yeni bir Header-Rootme-Admin Header’i ekleyerek değerine de herhangi bir url ekliyorum.

8.soru flag
8.soru flag



Böyle bir istekte bulunduğum da ise bana flag’i dönüyor.

Flag = HeadersMayBeUseful



HTTP – POST​




Give a try’a her bastığımız da bize farklı bir sayı dönüyor. Sayfa kaynağını görüntüleyip baktığımız da karşımıza

Js matematik işlemi
Js matematik işlemi

kod parçacığı çıkıyor. Bu kod, puan değişkenine her seferinde 0’dan 1000001’e (dahil değil) rastgele bir değer atar. Buna göre 999999 puandan fazlasını almak için pek şansınız yok. Bu komut dosyasını kaldırabilir ve değeri puan değişkenine kendimiz atayabiliriz.

9.soru flag
9.soru flag

Flag = H7tp_h4s_N0_s3Cr37S_F0r_y0U



HTTP – Improper redirect​




Biraz inceledikten sonra Request’te GET /web-serveur/ch32/login.php?redirect HTTP/1.1 kısmında bir yönlendirme hatası olduğu bariz belliydi login.php yerine index.php yazdım ve karşıma flag çıktı.

10.soru flag
10.soru flag



Flag = ExecutionAfterRedirectIsBad
 
Moderatör tarafında düzenlendi:
Geri
Üst