Anıl Doğan tarafından yazılmıştır.
Start the challenge dedikten sonra karşımıza bi alert geliyor.
11.Soru
Burp ile araya girip baktığımda sonuç odaklı bir şey yoktu. Bir şeyleri değiştirip request ettim fakat herhangi bir sonuç alamadım. Daha sonra ” headers ” kısmında bir ipucu yakaladım. HTTP’de ki istekler ile ilgili olduğunu anladım. GET veya POST ile değil de aynı sonucu çıkartan fakat işlem gidişatı farklı olan diğer istekleri yazdım (CONNECT) ve flagi bana verdi.
11.soru flag
flag = a23e$dme96d3saez$$prap
Karşımıza boş bir sayfa çıkıyor. İlk işlem olarak kaynak koduna baktığımız zaman bize bir ipucu veriyor.
<!– /web-serveur/ch6/phpbb –>
Phpbb’yi internette arattığım zaman kurulumu hakkında bilgi veriyor bana.
12.soru
Daha sonra bu kurulumu kendime göre derleyip istenilen şeyi yaptığımız da flag karşımıza çıkıyor.
12.soru flag
flag = karambar
Soruda bizden istediği şey sorunun adında verilmiş zaten. CRLF; carriage return(satır başı) ve line feed(yeni satır) anlamına gelmektedir. Windows işletim sistemlerin de CRLF karakterleri kullanılır fakat Linux & Unix de ise sadece LF karakteri kullanılır. İsminden de geldiği gibi CR ( \r ) ve LF (\n) karakterleri kullanılarak sunucudan gelen yanıtın değiştirilmesiyle ilişkilidir. Çok önemli bir zafiyettir, overflow gibi zaafiyetlere yol açabiliyor. Bu karakterleri kullanarak, web önbelleğini zehirleyebilir, web güvenlik duvarlarını
atlayabilir ve daha fazlasını yapabilirsiniz. Soruya geçersek;
13.soru
İlk başta sürekli yaptığımız username ve password kısmına ‘admin’ yazıp denedikten sonra
alt kısımda girdiğimiz kullanıcı adının yazısını bize gösteriyor. Ne girersek girelim bize o girdiğimiz yazıyı gösteriyor. Bu sebepten ötürü Repeater kısmında GET bölümü ve HTTP/1.1 ‘ in arasına KİMLİK DOĞRULAMA İSTEĞİ YAPMAK İÇİN username=admin&password=admin2 yazıp tekrar deniyoruz durum değişecek mi diye.
Tekrar Repeat attıktan sonra tekrar aynı şey geliyor. Kullanıcı adını geçersiz kimlik
doğrulama mesajından ayırmak için satır sonu karakterleri koymaya çalışıyoruz. Tekrar denedikten
sonra Admin1 den sonra ki mesajın alt satıra geçtiğini yani bir açık olduğunu görüyoruz.
13.soru CRLF
Şimdi o boşluğu bir ileti mesajı yani aynı hata mesajı ile doldurmaya çalışacağız fakat bunu
yaparken kullanıcı kimliği olarak username=’admin‘ yazıp bir istekte bulunacağız.
13.soru flag
flag = rFSP&G0p&5uAg1%
Bizden dosya yükleyip o dosyayı çalıştırmamızı istiyor fakat dosya formatının jpeg vb. olmasını koşul sunuyor.
14.soru
File upload gibi sorularda her zaman yapıldığı gibi shell.php dosyası yükleyip onu çalıştırmamız ve sonrasında passwd klasörüne gidip flagi almamızı istiyor. Burada soru başlığında söylenildiği gibi çift uzantı diyor normalde shell.php yükeyip content-type değiştirseydik direk çalışırdı fakat burada fotoğrafın içine passwd klasörüne giden kısa bir kod yazıp kaydedeceğiz. Herhangi bir resim dosyasını txt ile açıp sonuna veya başına hiç farketmez istediğiniz yere altta verdiğim kodu yazıp kaydedip çıkıyoruz.
14 resmin içine php
<?php
$output = shell_exec(‘cat ../../../.passwd’);
echo “<pre>$output</pre>”;
?>
Dosyayı upload ediyoruz ve karşımıza dosyanın adresini veriyor. Yüklediğimiz dosyaya gitmek için adrese basıyoruz ve flag karşımıza geliyor.
14 flag
flag = Gg9LRz-hWSxqqUKd77-_q-6G8
Burada ise bir önceki soru da göstermiş olduğum uzantıyı png olarak değil de burp ile araya girip direkt olarak yükleyebiliyorsunuz. Dolayısıyla shell.php dosyasını indirmek zorundasınız.
https://raw.githubusercontent.com/flozz/p0wny-shell/master/shell.php kaydedip devam edelim.
15 upload shell
shell.php dosyasını yüklerken araya giriyoruz ve karşımıza bu ekran çıkıyor. Bu ekranda png yerini bypass etmek için aşağıda verilen Content-Type kısmını image/jpeg&png ile değiştiriyoruz ve ardından forward ettiğimiz zaman dosya yüklenmiş olacaktır.
15.soru uploaded
Burada yüklediğiniz dosyaya bastığınız zaman yüklemiş olduğunuz shell’e gönderecektir sizi. Bir önceki soru da vermiş olduğum kodda otomatik olarak .passwd klasörüne gidip bize flagi veriyordu şimdi ise kendimiz yapacağız.
15.soru flag
flag = a7n4nizpgQgnPERy89uanf6T4
Soruyu inceliyoruz ve saved mail dediğimiz zaman admin olmamız gerektiğini söylüyor ve ne yazarsak yazalım kayıt edildi diye bir bilgi dönüyor.
16.soru
İster firefox ile ister burp ile araya girip visiteur kısmını admin ile değiştirip istek attıktan sonra flag karşımıza çıkıyor.
16.soru flag
flag = ml-SYM
Karşımıza tek çıkan şey HR Database ve bir login ekranı.
17.soru
Database’e erişim için git kullanarak alt dizinlerdeki dosyalara ulaşacağız.
17.soru git
index’in içinde config.php diye bir dosya var ona erişip içinde ki flagi almamız lazım, bu dosyalara erişim için hepsini indirmemiz lazım.
17.soru file uploaded
Dosyalar geldi ve log kayıtlarına bakıyoruz değişiklik ne olmuş diye.
17.soru log
Log kayıtların da karşımıza ” changed password ” diye bir şey çıktı ve girip baktığımız da flag karşımıza çıkıyor.
17.soru flag
flag = s3cureP@ssw0rd
Soruyu biraz kurcaladıktan sonra ” Login As Guest ” kısmın da cookies de bir jwt yani json web token görüyoruz.
18.soru cookie
Bu tokeni imza kısmı hariç base64 decode ettikten sonra değiştirmemiz gereken yerleri anlıyoruz.
18soru decode
base64 işleminin sonucun da karşımıza çıkan isimlerde; alg=none ve guest=admin olacak. Bunları tek tek yapıp imza hariç birleştiriyoruz ve cookie value değerine yazıp isteğimizi gönderiyoruz ve flag karşımıza çıkıyor.
18.soru flag
flag = S1gn4tuR3_v3r1f1c4t10N_1S_1MP0Rt4n7
19.soru
İçerikte herhangi bir şey dikkatimizi çekmiyor, url kısmına baktığımız da neye basarsak basalım hepsinin adı bize gözüküyor.
19.soru url
” galerie= ” sağ tarafını siliyoruz ve resimler kırık bir şekilde karşımıza çıkıyor. Bu resimlerin üstünde resimlerden farklı bir dosya çıkıyor karşımıza. Ögeyi inceleden klasörün adını alıp ” galeri= ” sağ kısmına yapıştırıyoruz.
19.soru ögeyi denetle
passwd diye bir dosya çıkıyor bu dosyayı yeni sekmede açıyoruz ve flag karşımızda.
19.soru flag
flag = kcb$!Bx@v4Gs9Ez
Yukarıda çözdüğüm MIME type sorusunda yaptığımız işlemlerle tek farkı Null byte kullanmamız olucak.
20.soru
Upload ederken aynı işlemleri gerçekleştiriyoruz(shell.php yüklüyoruz) ve burp ile araya giriyoruz. Content-Type değiştirdikten sonra yüklediğimiz dosyanın sonuna Null byte (%00) yazıyoruz.
20.soru upload
düzenlemeler bitti ve forward ettikten sonra shell dosyamız yüklenmiş oluyor. Yüklediğimiz dosyayı yeni sekmede açıyoruz ve flag karşımıza geliyor.
20.soru flag
flag = YPNchi2NmTwygr2dgCCF
[TR] Root Me Web-Server Write Up 2
HTTP – Verb ta mpering
Start the challenge dedikten sonra karşımıza bi alert geliyor.
11.Soru
Burp ile araya girip baktığımda sonuç odaklı bir şey yoktu. Bir şeyleri değiştirip request ettim fakat herhangi bir sonuç alamadım. Daha sonra ” headers ” kısmında bir ipucu yakaladım. HTTP’de ki istekler ile ilgili olduğunu anladım. GET veya POST ile değil de aynı sonucu çıkartan fakat işlem gidişatı farklı olan diğer istekleri yazdım (CONNECT) ve flagi bana verdi.
11.soru flag
flag = a23e$dme96d3saez$$prap
Install files
Karşımıza boş bir sayfa çıkıyor. İlk işlem olarak kaynak koduna baktığımız zaman bize bir ipucu veriyor.
<!– /web-serveur/ch6/phpbb –>
Phpbb’yi internette arattığım zaman kurulumu hakkında bilgi veriyor bana.
12.soru
Daha sonra bu kurulumu kendime göre derleyip istenilen şeyi yaptığımız da flag karşımıza çıkıyor.
12.soru flag
flag = karambar
CRLF
Soruda bizden istediği şey sorunun adında verilmiş zaten. CRLF; carriage return(satır başı) ve line feed(yeni satır) anlamına gelmektedir. Windows işletim sistemlerin de CRLF karakterleri kullanılır fakat Linux & Unix de ise sadece LF karakteri kullanılır. İsminden de geldiği gibi CR ( \r ) ve LF (\n) karakterleri kullanılarak sunucudan gelen yanıtın değiştirilmesiyle ilişkilidir. Çok önemli bir zafiyettir, overflow gibi zaafiyetlere yol açabiliyor. Bu karakterleri kullanarak, web önbelleğini zehirleyebilir, web güvenlik duvarlarını
atlayabilir ve daha fazlasını yapabilirsiniz. Soruya geçersek;
13.soru
İlk başta sürekli yaptığımız username ve password kısmına ‘admin’ yazıp denedikten sonra
alt kısımda girdiğimiz kullanıcı adının yazısını bize gösteriyor. Ne girersek girelim bize o girdiğimiz yazıyı gösteriyor. Bu sebepten ötürü Repeater kısmında GET bölümü ve HTTP/1.1 ‘ in arasına KİMLİK DOĞRULAMA İSTEĞİ YAPMAK İÇİN username=admin&password=admin2 yazıp tekrar deniyoruz durum değişecek mi diye.
Tekrar Repeat attıktan sonra tekrar aynı şey geliyor. Kullanıcı adını geçersiz kimlik
doğrulama mesajından ayırmak için satır sonu karakterleri koymaya çalışıyoruz. Tekrar denedikten
sonra Admin1 den sonra ki mesajın alt satıra geçtiğini yani bir açık olduğunu görüyoruz.
13.soru CRLF
Şimdi o boşluğu bir ileti mesajı yani aynı hata mesajı ile doldurmaya çalışacağız fakat bunu
yaparken kullanıcı kimliği olarak username=’admin‘ yazıp bir istekte bulunacağız.
13.soru flag
flag = rFSP&G0p&5uAg1%
File upload – Double extensions
Bizden dosya yükleyip o dosyayı çalıştırmamızı istiyor fakat dosya formatının jpeg vb. olmasını koşul sunuyor.
14.soru
File upload gibi sorularda her zaman yapıldığı gibi shell.php dosyası yükleyip onu çalıştırmamız ve sonrasında passwd klasörüne gidip flagi almamızı istiyor. Burada soru başlığında söylenildiği gibi çift uzantı diyor normalde shell.php yükeyip content-type değiştirseydik direk çalışırdı fakat burada fotoğrafın içine passwd klasörüne giden kısa bir kod yazıp kaydedeceğiz. Herhangi bir resim dosyasını txt ile açıp sonuna veya başına hiç farketmez istediğiniz yere altta verdiğim kodu yazıp kaydedip çıkıyoruz.
14 resmin içine php
<?php
$output = shell_exec(‘cat ../../../.passwd’);
echo “<pre>$output</pre>”;
?>
Dosyayı upload ediyoruz ve karşımıza dosyanın adresini veriyor. Yüklediğimiz dosyaya gitmek için adrese basıyoruz ve flag karşımıza geliyor.
14 flag
flag = Gg9LRz-hWSxqqUKd77-_q-6G8
File upload – MIME type
Burada ise bir önceki soru da göstermiş olduğum uzantıyı png olarak değil de burp ile araya girip direkt olarak yükleyebiliyorsunuz. Dolayısıyla shell.php dosyasını indirmek zorundasınız.
https://raw.githubusercontent.com/flozz/p0wny-shell/master/shell.php kaydedip devam edelim.
15 upload shell
shell.php dosyasını yüklerken araya giriyoruz ve karşımıza bu ekran çıkıyor. Bu ekranda png yerini bypass etmek için aşağıda verilen Content-Type kısmını image/jpeg&png ile değiştiriyoruz ve ardından forward ettiğimiz zaman dosya yüklenmiş olacaktır.
15.soru uploaded
Burada yüklediğiniz dosyaya bastığınız zaman yüklemiş olduğunuz shell’e gönderecektir sizi. Bir önceki soru da vermiş olduğum kodda otomatik olarak .passwd klasörüne gidip bize flagi veriyordu şimdi ise kendimiz yapacağız.
15.soru flag
flag = a7n4nizpgQgnPERy89uanf6T4
HTTP – Cookies
Soruyu inceliyoruz ve saved mail dediğimiz zaman admin olmamız gerektiğini söylüyor ve ne yazarsak yazalım kayıt edildi diye bir bilgi dönüyor.
16.soru
İster firefox ile ister burp ile araya girip visiteur kısmını admin ile değiştirip istek attıktan sonra flag karşımıza çıkıyor.
16.soru flag
flag = ml-SYM
Insecure Code Management
Karşımıza tek çıkan şey HR Database ve bir login ekranı.
17.soru
Database’e erişim için git kullanarak alt dizinlerdeki dosyalara ulaşacağız.
17.soru git
index’in içinde config.php diye bir dosya var ona erişip içinde ki flagi almamız lazım, bu dosyalara erişim için hepsini indirmemiz lazım.
17.soru file uploaded
Dosyalar geldi ve log kayıtlarına bakıyoruz değişiklik ne olmuş diye.
17.soru log
Log kayıtların da karşımıza ” changed password ” diye bir şey çıktı ve girip baktığımız da flag karşımıza çıkıyor.
17.soru flag
flag = s3cureP@ssw0rd
JSON Web Token (JWT) – Introduction
Soruyu biraz kurcaladıktan sonra ” Login As Guest ” kısmın da cookies de bir jwt yani json web token görüyoruz.
18.soru cookie
Bu tokeni imza kısmı hariç base64 decode ettikten sonra değiştirmemiz gereken yerleri anlıyoruz.
18soru decode
base64 işleminin sonucun da karşımıza çıkan isimlerde; alg=none ve guest=admin olacak. Bunları tek tek yapıp imza hariç birleştiriyoruz ve cookie value değerine yazıp isteğimizi gönderiyoruz ve flag karşımıza çıkıyor.
18.soru flag
flag = S1gn4tuR3_v3r1f1c4t10N_1S_1MP0Rt4n7
Directory traversal
19.soru
İçerikte herhangi bir şey dikkatimizi çekmiyor, url kısmına baktığımız da neye basarsak basalım hepsinin adı bize gözüküyor.
19.soru url
” galerie= ” sağ tarafını siliyoruz ve resimler kırık bir şekilde karşımıza çıkıyor. Bu resimlerin üstünde resimlerden farklı bir dosya çıkıyor karşımıza. Ögeyi inceleden klasörün adını alıp ” galeri= ” sağ kısmına yapıştırıyoruz.
19.soru ögeyi denetle
passwd diye bir dosya çıkıyor bu dosyayı yeni sekmede açıyoruz ve flag karşımızda.
19.soru flag
flag = kcb$!Bx@v4Gs9Ez
File upload – Null byte
Yukarıda çözdüğüm MIME type sorusunda yaptığımız işlemlerle tek farkı Null byte kullanmamız olucak.
20.soru
Upload ederken aynı işlemleri gerçekleştiriyoruz(shell.php yüklüyoruz) ve burp ile araya giriyoruz. Content-Type değiştirdikten sonra yüklediğimiz dosyanın sonuna Null byte (%00) yazıyoruz.
20.soru upload
düzenlemeler bitti ve forward ettikten sonra shell dosyamız yüklenmiş oluyor. Yüklediğimiz dosyayı yeni sekmede açıyoruz ve flag karşımıza geliyor.
20.soru flag
flag = YPNchi2NmTwygr2dgCCF
Moderatör tarafında düzenlendi: