Anıl Doğan tarafından yazılmıştır.
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
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
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
Flag = e6f8a530811d5a479812d7b82fc1a5c5
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
Flag = rr$Li9%L34qd1AAe27
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
Flag = admin
5.soru flag
Flag = S3rv1ceP1n9Sup3rS3cure
Dosyayı notepad++ ile açtıktan sonra karşımıza kullanıcı adı ve şifrenin çıktığını görüyoruz.
6.soru flag
Karşımıza çıkan kullanıcı adı ve şifreyi web sayfasında girdikten sonra flag’i password olarak veriyor.
Flag = OCCY9AcNm1tj
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
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
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
Böyle bir istekte bulunduğum da ise bana flag’i dönüyor.
Flag = HeadersMayBeUseful
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
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
Flag = H7tp_h4s_N0_s3Cr37S_F0r_y0U
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
Flag = ExecutionAfterRedirectIsBad
[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
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
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
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
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
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
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
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
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
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
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
Flag = ExecutionAfterRedirectIsBad
Moderatör tarafında düzenlendi: