Как использовать оператор SQL для получения данных с веб-сайта, если я знаю только имя пользователя? - PullRequest
0 голосов
/ 01 марта 2019

Я новичок в MYSQL, и у меня есть школьное задание, которое гласит: The SQL Injection Task

Это код PhP, который показывает, как пользователи проходят проверку подлинности:

$input_uname = $_GET[’username’];
$input_pwd = $_GET[’Password’];
$hashed_pwd = sha1($input_pwd);
...
$sql = "SELECT id, name, eid, salary, birth, ssn, address, email,
nickname, Password
FROM credential
WHERE name= ’$input_uname’ and Password=’$hashed_pwd’";
$result = $conn -> query($sql);
// The following is Pseudo Code
if(id != NULL) {
if(name==’admin’) {
return All employees information;
} else if (name !=NULL){
return employee information;
}
} else {
Authentication Fails;
}

Я пробовал так много разных вещей, как это:

SELECT * FROM credential WHERE name= 'admin';

SELECT * FROM credential WHERE name= 'admin' and Password= 'xyz';, и я поместил это утверждение в поле имени пользователя и xyz в поле пароля,Я не уверен, правильно ли я к этому подхожу.Оператор SQL должен в поле имени пользователя, правильно?Поле пароля оставлено пустым?Мой профессор не освещал это в классе.Может кто-нибудь уточнить, пожалуйста, как это делается?Я видел примеры в Интернете, и все они выглядят примерно так же, как и выше.Но я получаю одну и ту же ошибку каждый раз:

`There was an error running the query [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'admin' and password= "xyz"; and Password= da39a3ee5e6b40d3255bfe95601890afd80 at line 3]\n`

Спасибо всем заранее!

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Оказывается, это то, что сработало для меня:

Admin’ or ‘1=1

Я не совсем уверен, почему это также работает, но оно работает:

Admin’ or ‘
0 голосов
/ 01 марта 2019

Я не согласен с тем, что этот вопрос призван научить людей взломать.Он предназначен для того, чтобы научить бэкэнд-разработчика дезинфицировать входные данные, чтобы избежать внедрения SQL или других типов атак.

Чтобы ответить на ваш вопрос, вы можете оставить поле пароля пустым и просто использовать имя пользователя.

На коде сервера видно, что входные данные не контролируются, поскольку входные данные принимаются как есть и помещаются в оператор SQL.Таким образом, чтобы оператор SQL выполнял то, что вы ищете, поле может иметь следующее значение:

admin'; --

Дефисы - это комментарии SQL, которые позволяют отключить последнюю часть оператора select дляне нужно предоставлять пароль.И цитата и;закрою заявление.Результат, вы войдете как администратор; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...