SQL-инъекция для имени пользователя

1

У меня есть 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 я могу использовать для входа?

спасибо

  • 1
    Вы не авторизуетесь на основе возврата запроса. Вы сравниваете пароль БД с введенным паролем, поэтому SQL-инъекции недостаточно. Не сказать, что ваша БД безопасна. Используйте готовые заявления.
  • 0
    Вы просите нас помочь вам использовать SQL-инъекцию против веб-сайта? Потому что в некоторых юрисдикциях это незаконно ...
Показать ещё 1 комментарий
Теги:
sql-injection

1 ответ

0

Игнорируйте PHP. Сосредоточьтесь на SQL:

... WHERE username='$value'

Вы должны подорвать это во что-то вроде

... WHERE username = '$value' OR truevalue

Но у вас есть что надоедливое ' после $value там, мешая, так что

... WHERE username = '$value' OR ''=''
                     ^---------------^--- original quotes
                      ^^^^^^^^^^^^^^^---injected value

так

$_POST['username'] = "' or ''='"

Но обратите внимание, что это не позволит входить в систему так или иначе, поскольку вы все еще сравниваете пароли в неинжекционном режиме. Это будет просто действовать, чтобы получить ВСЕ записи пользователя в базе данных, а не только одну учетную запись пользователя.

  • 0
    Спасибо за ваше объяснение. Я чувствую, что теперь я ближе, потому что я на самом деле получаю ошибку SQL в результате: Предупреждение: mysqli_fetch_assoc () ожидает, что параметр 1 будет mysqli_result, логическое значение дано в C: \ .... строка 21
  • 0
    Также хорошей идеей будет экранирование вашего имени пользователя, прежде чем использовать его следующим образом: mysql_real_escape_string ($ _ POST ['username']). Тем не менее, лучше использовать готовые заявления.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню