Sqli

Websec.fr Level 02
The source code for level2 is here. <?php ini_set('display_errors', 'on'); class LevelTwo { public function doQuery($injection) { $pdo = new SQLite3('leveltwo.db', SQLITE3_OPEN_READONLY); $searchWords = implode (['union', 'order', 'select', 'from', 'group', 'by'], '|'); $injection = preg_replace ('/' . $searchWords . '/i', '', $injection); $query = 'SELECT id,username FROM users WHERE id=' . $injection . ' LIMIT 1'; $getUsers = $pdo->query ($query); $users = $getUsers->fetchArray (SQLITE3_ASSOC); if ($users) { return $users; } return false; } } if (isset ($_POST['submit']) && isset ($_POST['user_id'])) { $lt = new LevelTwo (); $userDetails = $lt->doQuery ($_POST['user_id']); } ?
websec sqli
Websec.fr Level 01
Websec.fr Level 1 level01 - 1 point - 2564 solves The source code for level1 is shown here. Only the PHP code is included because the vulnerability is only in the PHP code. <?php session_start (); ini_set('display_errors', 'on'); ini_set('error_reporting', E_ALL); include 'anti_csrf.php'; init_token (); class LevelOne { public function doQuery($injection) { $pdo = new SQLite3('database.db', SQLITE3_OPEN_READONLY); $query = 'SELECT id,username FROM users WHERE id=' . $injection . ' LIMIT 1'; $getUsers = $pdo->query($query); $users = $getUsers->fetchArray(SQLITE3_ASSOC); if ($users) { return $users; } return false; } } if (isset ($_POST['submit']) && isset ($_POST['user_id'])) { check_and_refresh_token(); $lo = new LevelOne (); $userDetails = $lo->doQuery ($_POST['user_id']); } ?
websec sqli

Tedsig42

Another infosec enthusiast blog