Apa itu LFI?

Local File Inclusion memungkinkan kita untuk melakukan inklusi/include sebuah file (Mengeksekusi/membaca file lain yang berada pada server yang seharusnya tidak boleh kita eksekusi diluar prosedur)

Apa itu include?

http://php.net/manual/en/function.include.php

Latihan:

Mari kita buka url berikut ini

http://ctf.asgama.tk:40004/

Terdapat menu home dan kontak, serta terdapat sebuah source code.

Mari kita buka source code tsb.

<?php if(isset($_GET["page"])): ?>
       <p><?php include $_GET["page"]; ?></p>
   <?php else: ?>
       <p>Nothing to do here</p>
   <?php endif; ?>

Dari kode diatas, kita bisa mengetahui bahwa web tsb melakukan inklusi/include dengan parameter $_GET[“page”], bisa kita ketahui saat kita membuka menu kontak.

Artinya, isi dari contact.php adalah berupa kontak line.

Lalu secara default (pada halaman home) maka akan muncul teks “Nothing to do here” karena tidak terdapat parameter page pada url (GET Method)

Oleh karena itu, kita bisa mengetahui bahwa web tersebut kemungkinan bisa diinjeksi dengan path/lokasi dari suatu file untuk menginklusi/include file tersebut.

Misalkan kita ingin menginklusi file /etc/passwd, maka kita langsung saja menginjeksikannya pada parameter page

http://ctf.asgama.tk:40004/index.php?page=/etc/passwd

Tadaa, ternyata vuln terhadap LFI

Kita belum mendapatkan flagnya, coba kita cek source code halaman tsb.

Terdapat hal yang menarik, yaitu lokasi flag ada di bendera/flag.txt

Oke langsung saja kita injeksi kedalam parameter page di url.

http://ctf.asgama.tk:40004/index.php?page=bendera/flag.txt

Yay kita mendapatkan flagnya :3