Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Статьи (https://forum.antichat.xyz/forumdisplay.php?f=30)
-   -   SQL Injection в форумах (https://forum.antichat.xyz/showthread.php?t=20367)

Dracula4ever 10.06.2006 17:11

SQL Injection в форумах
 
Привет всем!!!
Сегодня я решил написать вам текст про SQL Injection.Вы навернека спрашивайте самих себя зачем,тут разве не хватает чего-то,разве тут нет достаточно умных людей что мы не можем доверять их статьям?
Так я вам хочу сказать что есть много умных людей которые вас в свойх статьях научили всему что надо знать новичкам про SQL Injection,но они не описали
такой вопрос как : хакеры получают доступ к админке форума.Поэтому я решил написать эту статью чтоб вы поняли что может произойти с вашими форумами (если вы их не охраняете).



Я начну с того как форумы работают . Для этого я вам обьясню про язык SQL.
SQL (Strucured query language) это язык ,ориентированный специально на реляционные базы данных.
Теперь давайте я вам покажу несколько команд в языке SQL.
Допустим, у нас есть вот такая база данных:

http://img96.imageshack.us/img96/7910/db17py.png

И мы хотим знать имена учеников, которые получили больше 90 на экзамене, мы напишим этот код:


Цитата:

SELECT FirstName FROM Students WHERE Grade = 90;

У нас должен получиться такой ответ:

http://img98.imageshack.us/img98/3775/db25ly.png

Команда SELECT просто инструктирует базу данных ,чтобы извлечь информацию из таблицы.
Команда FROM говорит что надо извлечь из...
Команда WHERE говорит что извлечётся из...



Ладно, теперь когда я вам показал главное в SQL давайте посмотрим как выгледят команды SQL в форумах.
SQL код в форумах в которые мы хотим записаться выгледит так:


Цитата:

INSERT INTO Users VALUES ('[User]', '[Password]', 'User');

Допустим я хочу записаться на форум и я на него записался ,с ником Dracula4ever и паролем antichat. Тогда SQL код который находится в форуме в который мы записываемся выгледит так:


Цитата:

INSERT INTO Users VALUES ('Dracula4ever', 'antichat', 'User');

INSERT это название команды котороя говорит ,что мы должны вставить что-то ,новое в таблицу.
INTO Users это значит в таблицу базы данных Users (там где хранится вся информация про участников форума. Например их ник и пароль).
User это озночает что каким бы мы ником не записались на форум мы будем обыкномеными пользователями.


Теперь давайте посмотрим что хакеры могут сделать в таком случае.
Допустим злой хакер с ником Hacker с паролям 12345 хочет записаться на форум и получить админство (стать главным директором форума).
Для того чтобы получить админство на форуме хакеры могут сделать вот так:
Свой ник сделать Hacker , а пароль 12345','Admin');-- .
Что это ему (тому кто хочет взломать) даст?
Давайте рассмотрим как выгледит SQL код в форуме на который он хочет записаться:


Цитата:

INSERT INTO Users VALUES ('[User]', '[Password]', 'User');

Когда он вставляет SQL код в форум , это выгледит так:


Цитата:

INSERT INTO Users VALUES ('Gil', '12345', 'Admin');-- ', 'User');

Давайте рассмотрим что это ему даст.
Все что вы видите кроме того, что закрашено красным цветом, это обыкновенный код который я вам уже обьяснил.
Но вот есть хорошый вопрос : что значит -- ?
Этот код значит, что все что написано после этих палочек , не будет считаться базой данных.
То есть Admin поменяется местами с User и у взломщика будет возможность стать администратором форума!


Теперь давайте посмотрим возможность входа в систему SQL Injection.

SQL код который находится в форуме в который мы хотим войти в систему выгледит так:


Цитата:

SELECT UserName FROM Users WHERE (UserName = '[User]') and (Password = '[Password]');

Если я хочу войти в систему с ником Dracula4ever и паролем antichat , то SQL выгледит так:


Цитата:

SELECT UserName FROM Users WHERE (UserName = 'Dracula4ever') and (Password = 'antichat');

Теперь давайте посмотрим что хакеры могут сделать в таком случае.
Допустим что ник администратора Admin (пароль нам не известен).
Хакер может просто написать в логине Admin'); -- и все! (пароль не надо писать).
Давайте рассмотрим что это ему даст.
-- код значит что все что написано после этих палочек (даже пароль) не будет читаться базой данных.


Также хакеры могут просто вставить какой он хотят ник а пароль сделать blabla' or 'a'='a .
В таком случае у хакера получаютя следущий услрвия:
либо password='blabla' либо 'a'='a ' ,но a всегда равна сама себе.
Взломщик также может попробовать другие варианты если у него не получиться получить доступ к системе.
Например:
blabla" or "a"="a
blabla" or 1=1 --
blabla' or 1=1 --
blabla' or 'x'='x'

И так ещё много других вариантов.





Ладно я надеюсь что вам понравилась моя статья.
Если есть вопрось пишите мне.



Dracula4ever

NaX[no]rT 10.06.2006 17:31

Мдя MySQL поддерживает этот способ комментирования принятый в ANSI SQL только в том случае, если после -- идёт пробел, которого у тебя нет.
Должно выглядеть так
Код:

INSERT INTO Users VALUES ('Gil', '12345', 'Admin');--_', 'User');
Где _ - пробел

Да и вообще -- мало кто использует, его работоспособность очень мала.

Цитата:

-- код значит что все что написано после этих палочек (даже пароль) не будет читаться базой данных.
хня какая-то, какие палочки? Двойное тире называется. Всё оно будет читаться, просто при нахождении в строке -- будет удаляться до конца строки всё что за --.

Мне статья не понравилась

Dracula4ever 10.06.2006 17:33

Исправил

Sn@k3 10.06.2006 18:29

Цитата:

Сообщение от NaX[no]r†
Мдя MySQL поддерживает этот способ комментирования принятый в ANSI SQL только в том случае, если после -- идёт пробел, которого у тебя нет.
Должно выглядеть так
Код:

INSERT INTO Users VALUES ('Gil', '12345', 'Admin');--_', 'User');
Где _ - пробел

Да и вообще -- мало кто использует, его работоспособность очень мала.


хня какая-то, какие палочки? Двойное тире называется. Всё оно будет читаться, просто при нахождении в строке -- будет удаляться до конца строки всё что за --.

Мне статья не понравилась



не***т зачёт. статья будет полезна новичкам, в частности мне, так как не особо знаком с этимя. плюс

Rebz 10.06.2006 18:57

гм.. написано прям для американцев
Цитата:

Для этого я вам обьясню про язык SQL.
объяснена только команда insert
а чего update нет?
А OUTER JOINER ? я хочу статью про связку таблиц!))

Xex 10.06.2006 20:34

Тьфу, опять время потерял....
RE:"но они не описали такой вопрос как : хакеры получают доступ к админке форума.Поэтому я решил написать эту статью чтоб вы поняли что может произойти с вашими форумами" - ты решил написать, как получив логин и пасс админа, ввести его в формочку авторизации на форуме?
P>S>Минус тебе, за то что наживаешь плюсы на новичках.
P>S>S>Хватит писать, одно и то же, если реально думаете что соображаете в sql-injection, то почему бы не изучить более глубоко тему...Наглядный пример, говорят что инъекция в MSSQL - примитивна, но почему то никто ничего путнего не отпостил в http://forum.antichat.ru/thread20157.html

Dracula4ever 10.06.2006 22:32

Цитата:

Сообщение от Sn@k3
не***т зачёт. статья будет полезна новичкам, в частности мне, так как не особо знаком с этимя. плюс

Я рад что тебе она понравилась :D

Dracula4ever 11.06.2006 18:40

Dr.Check я рад что моя статья тебе по душе.
Rebz если ты так сильно хочеш узнать про update тогда тебе сюда: http://forum.antichat.ru/thread19696.html

Dracula4ever 12.06.2006 20:56

Цитата:

Сообщение от blackybr
Для новичков неполохо ) чем то похожа на статейку вульфика из рст

Можеш дать линк на его статью?

Cold_Zer0 13.06.2006 00:11

Ты сказал что ты расскажешь что то новое, а где оно это новое можно узнать!? Оъяснишь, соглашусь, тогда от меня репа!!!


Время: 17:37