[Technofair 8.0] Simple

ctf, web

Diberikan soal dan sebuah website dengan deskripsi seperti berikut

Simple

Description
Is it simple huh?

http://103.152.242.172:20053/
Author: brokenheart

Setelah website dibuka, website menggunakan PHP dan terdapat satu input field nama.

maaf lupa screenshoot isi dari websitenya 🙏

Pada website tersebut terdapat bug LFI (Local File Inclusion) pada parameter ?page di index website

Setelah itu dilakukan pencarian terhadap clue selanjutnya dengan melakukan pembacaan file melalui file inclusion tetapi tidak ada satu pun file yang membantu memberikan hint agar bisa mendapatkan flag.

Setelah melakukan pencarian lebih dalam, pada index.php saat kita menginputkan nama, maka nama tersebut akan disimpan pada PHP Session yang biasanya terletak pada /var/lib/php/sessions/sess_random

Demo time
Buatlah sebuah file test.php dengan code seperti berikut dan jalankan dengan command php -S 0.0.0.0:8000

<?php

session_start();
$_SESSION['nama'] = "ryo";

?>

Lalu buka 0.0.0.0:8000/test.php pada browser, maka akan ada satu file baru yang muncul pada /var/lib/php/sessions/ kalian

Browser

File Baru

Jika kita lihat, bahwa random dari file sess_random adalah Cookie PHP_SESSID yang diberikan pada browser kita. Dan isi dari file sess_random tersebut adalah session yang sudah di set pada $_SESSION['nama'] = "ryo";

Proof

Dengan itu apa yang kita inputkan pada nama tadi dapat ditampilkan pada website dengan melakukan inclusion pada file /var/lib/php/sessions/sess_random dengan random adalah value dari Cookie PHP_SESSID kita, sehingga kita dapat menginject suatu script PHP pada nama untuk mendapatkan RCE.

Setelah menginjectkan script PHP pada nama untuk melakukan Reverse Shell, lalu lakukan request kembali untuk melakukan inclusion pada /var/lib/php/sessions/sess_random. Maka akan mendapatkan shell

Reverse shell

Setelah mendapatkan reverse shell tinggal cat flag

Flag

techofair{walaupun_terlihat_gampang_nyatanya_susah_kan}