![]() |
внедрение sql
Хочу написать вот статью о технологии взлома sql.
Как-то, имхо, статей объясняющих "как" - много – а "почему" - мало. Вот я и постараюсь объяснить это самое "почему" для тех, кому это интересно. Итак, приступим. Язык sql состоит из предопределённых ключевых слов и специальных символов. Для того чтобы извлечь какие-либо данные из таблицы данных, необходимо воспользоваться оператором SELECT. При работе с web приложениями, как правило, именно этот оператор с ключевыми словами FROM и WHERE. Внедряя инструкции sql в такие запросы, можно добиться результата не предусмотренного … гм… просто непредусмотренного :) Формат выражений языка строго не определён, потому одно и тоже выражение может быть записано несколькими способами – что немного усложняет восприятие инструкций языка. Ну, пожалуй, введение можно закончить. Перейдём к практике :) OR 1=1 (Например видео от zFailure со взломом гостевой книги (advanced guestbook 2.2)) Очевидно, что это выражение создаёт логическое выражение, результатом выражения которого всегда будет "истина". Данное выражение используется, например, в запросах аутентификации когда проверяют пользовательские имя и пароль. Код:
sqlAuth = "SELECT userid FROM logins WHERE name='" & Username & "' AND password='" & Password & "'"Код:
SELECT userid FROM logins WHERE name='lexa' AND password='lamer'что-т типа того : Код:
SELECT userid FROM logins WHERE name='lexa' AND password='lamer' OR 1=1 UNION Этот оператор используется совместно с SELECT для извлечения всех столбцов из таблицы. Синтаксис -Код:
UNION ALL SELECT field FROM table WHERE condition INSERT Как понятно из названия - этот оператор предназначен для добавления каких-либо значений в БД. С помощью этого оператора можно впринципе добавить нового пользователя - admin с паролем 123Код:
INSERT INTO Users VALUES('admin', '123')Мда... Всё таки письменно выражать свои мысли значительно тяжелее, нежели устно. хз что получилось :) Тем не менее надеюсь что это поможет хоть кому нибудь. В заключение приведу небольшую памятку сиволов которые можно использовать в sql injection. Код:
'Код:
--Код:
+Код:
,@переменнаяКод:
?Param=lam&Param=malКод:
SETЗаключение. Вот вижу что тут кому-то не понравилось ;). А ты сам напиши :) |
Сори но чето я не догнал :(
' - это же не всегда завершает выражение, везде по разному... -- - только для mssql И про остальное тоже... Цитата:
|
' virgoz. Насчёт кавычки? Попрошу поподробнее. Я что-то тебя не понимаю 0_0
А про комментарии - да. Я говорил именно о Microsoft sql server. |
Union select * from bla where id=$e, где $e=1'
Ну вот тут допустим эта кавычка ниче не закроет. |
Тулзу простенькую накодил.
Вот небольшую тулзу накодил, для облегчения взлома серверов, юзая скулю, где фильтруются / слешируются кавычки.
(формирует из строки вида /etc/passwd строку вида char(47,101,116,99,47,112,97,115,115,119,100) ) простенькая, но полезная. качать тут http://ifolder.ru/4738224 |
hack-shop.org.ru/code.php
|
ну а так локально)
(тот линк раньше не видел) |
PHP код:
|
Код:
unit Unit1; |
http://webfile.ru/1658613 имхо самая удобная тема (спс какому-то мемберу, кто-то выкладывал...не помню)
|
| Время: 12:41 |