[Hacker101 CTF] – Cody’s First Blog

Difficulty : Moderate

(3 flag)

Diberikan sebuah website blog seperti berikut

Dan beberapa hint dari hacker101.

Dapat kita lihat bahwa website tersebut menggunakan PHP. Dari petunjuk tersebut, saya mencoba untuk membuat php code sederhana dalam comment tersebut.

 

Ketika saya melakukan submit, flag pertama dari soal tersebut muncul.

Flag 1= ^FLAG^f9980cde5f18742187362511451753704d2f0c93ad1668f756c7fb0d0408a62b$FLAG$

Untuk petunjuk flag selanjutnya

Dari hint tersebut saya melakukan check pertama kali pada source web soal.

Terdapat petunjuk pada line 19 <!–<a href=”?page=admin.auth.inc”>Admin login</a>–> . Dari petunjuk ini, saya melakukan request GET pada url dengan variable page dan isi admin.auth.inc (?page=admin.auth.inc).

Halaman home kita berubah menjadi admin login. Dari hint yang diberikan oleh hacker101, saya menduga .auth pada admin.auth.inc adahal authorization. Sehingga, dari dugaan ini saya menghapus .auth agar kolom login hilang. Ternyata dugaan saya tersebut benar, database admin keluar ketika saya menghapus .auth dari admin.auth.inc.

Dan di paling bawah halaman website tersebut terdapat flag kedua yang kita cari.

Flag 2= ^FLAG^05a6c3db86200e8e5efa1230a38031d8b0bcf4a657e4da6867d28a000e1e9ee9$FLAG$

Petunjuk untuk flag terakhir

Link untuk video pada hints point kedua

https://www.youtube.com/watch?v=ehp9TdmXWr0

 

Dari petunjuk hacker101 saya melihat database admin pada flag kedua. Terdapat approve comment dalam database admin tersebut. Ketika saya menggaprove comment tersebut 

 

comment yang telah kita berikan hilang, dan terdapat approve=2. Dari hint hacker101 comment kita tersimpan disuatu tempat. Sehingga, saya mencoba memasukkan random input pada page (saya menginput “a”).

Dapat dilihat bahwa apa yang kita masukkan ke dalam variable page akan masuk kedalam fungsi include. jadi apapun yang kita masukkan kedalam variable page maka akan masuk kedalam fungsi include digabungkan dengan .php(dalam random input “a.php”). Dapat dilihat juga bahwa kita berada di app/index.php. Dari sini kita dapat mengetahui bahwa data yang telah kita approve tersimpan dalam index.php. Sehingga, saya memasukkan index kedalam page agar menjadi include(index.php).

Dari sini kita mendapatkan error seperti gambar diatas, error ini membuat kita harus melakukan cara lain untuk mengakses index.php. Dari petunjuk yang ada di hacker101 include() tidak hanya dapat diisi dengan filename. Sehingga, jika kita mencoba melakukan localhost kedalam include dengan payload http://localhost/index.

Payload yang saya approve akan dijalankan oleh localhost. Dalam php terdapat fungsi readfile(), hal ini dapat membantu kita dalam membuka index.php. Sehingga, kita memasukkan payload <?php readfile(“index.php”) ?> ke dalam comment untuk di approve dan dijalankan oleh localhost.

Ketika kita approve dan membuka localhost dari website tersebut muncul flag pertama yang kita dapatkan dibawah home

Tetapi jika kita melihat ke source web tersebut (ctrl+u), kita dapat melihat readfile() kita memperlihatkan isi dari index.php dan terdapat flag di dalamnya.

 

Flag 3= ^FLAG^36fd7b1416ef59ac9630489b406a2fadba514b0e384316353bed66a39cefe542$FLAG$

Leave a Reply

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