Я работаю над проектом с несколькими друзьями. Наша задача в том, чтобы найти имя и пароль учетных данных, чтобы войти в фальшивой базеИмя пользователя SQL-запроса и пароль
Вот исходный код:
<?php
include "config.php";
$con = mysqli_connect("localhost", "sql1", "sql1", "sql1");
$username = $_POST["username"];
$password = $_POST["password"];
$debug = $_POST["debug"];
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysqli_query($con, $query);
if (intval($debug)) {
echo "<pre>";
echo "username: ", htmlspecialchars($username), "\n";
echo "password: ", htmlspecialchars($password), "\n";
echo "SQL query: ", htmlspecialchars($query), "\n";
if (mysqli_errno($con) !== 0) {
echo "SQL error: ", htmlspecialchars(mysqli_error($con)), "\n";
}
echo "</pre>";
}
if (mysqli_num_rows($result) !== 1) {
echo "<h1>Login failed.</h1>";
} else {
echo "<h1>Logged in!</h1>";
echo "<p>Your flag is: $FLAG</p>";
}
?>
Проктор дал нам подсказку с просьбой «Что произойдет, если имя пользователя или пароль содержит апостроф '
?
Я перепробовал все от ' or 1=1--
к вещам как ' OR a=1--
Если бы кто-нибудь мог помочь, я был бы очень признателен!
А что случилось? Возможно, вы захотите добавить 'LIMIT 1', поскольку вы только проверяете, есть ли только одна строка, полученная – kero
. Сначала вы должны проверить полученный контент, убедиться, что вы получили действительное имя пользователя и HASH PASSWORDS !! Тогда вы могли бы использовать функцию экранирования, такую как addslashes(), но есть лучшие способы в зависимости от lib (здесь mysqli) – Loenix
, то что вы предлагаете мне сделать, чтобы проверить содержание – TylerRutherford