Показать сообщение отдельно

  #21639  
Старый 14.11.2012, 16:45
aadktnbaov
Новичок
Регистрация: 06.06.2011
Сообщений: 14
С нами: 7860566

Репутация: 0
По умолчанию

прошу помощи для совершения sql-инъекции

Всем доброго времени суток.

Прошу помощи извлечь полезную информацию из базы данных, используя sql-инъекцию.

Недавно на некотором сайте обнаружил возможность sql-инъекции:

в передаваемом post-параметре НЕ фильтруется обратный слэш ( \ ; ascii-код = 92 = 0x5C ).

Если заполнить текстовый input с именем ID значением 12345 , а другой текстовый input с именем VarXXX значением 67890\ и за-SUBMIT-ить форму - то сайт вернет следущую ошибку:

Ошибка сервера Базы Данных MySQL!

Ошибка:

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 ''67890\' AND `id`=12345' at line 1

Номер ошибки:

1064

и далее подробности ошибки (ошибочный sql-запрос):

SELECT `id`,`varAAA`,`varBBB`,`varCCC`,`varDDD` FROM `tableXXX` WHERE `varXXX`='67890\' AND `id`=12345

"Одинарная" кавычка ( ' = апостроф ; ascii-код = 39 = 0x27 ) и "двойная" кавычка ( " ; ascii-код = 34 = 0x22 ) , а также + (знак плюса) фильтруются (вырезаются) ,вероятно, на уровне php.

Если , например, заполнить текстовый input с именем ID значением 5'4321 , а другой текстовый input с именем VarXXX значением 0'9876\ - то сайт вернет ошибку со следущими подробностями:

SELECT `id`,`varAAA`,`varBBB`,`varCCC`,`varDDD` FROM `tableXXX` WHERE `varXXX`='09876\' AND `id`=54321

Если , например, заполнить текстовый input с именем ID значением 5"4321 , а другой текстовый input с именем VarXXX значением 0"9876\ - то сайт вернет ошибку с теми же самыми подробностями:

SELECT `id`,`varAAA`,`varBBB`,`varCCC`,`varDDD` FROM `tableXXX` WHERE `varXXX`='09876\' AND `id`=54321

Символы !#$%&()*,-./:;?@[\]^_`{|}~ , а также пробел не фильтруются

Если , например, заполнить текстовый input с именем ID значением 777 , а другой текстовый input с именем VarXXX значением 11!#$%&()*,-./:;?@[\]^_`{|}~ 22 - то сайт вернет ошибку со следущими подробностями:

SELECT `id`,`varAAA`,`varBBB`,`varCCC`,`varDDD` FROM `tableXXX` WHERE `varXXX`='11!#$%&()*,-./:;?@[\]^_`{|}~ 22\' AND `id`=777

Подобным образом выяснилось, что значения из текстового input-а с именем ID приводятся только к числовому виду таким образом, что первый в строке любой нецифровой символ (или буква) , а также всё, что идёт после него (или неё), - вырезается.

Если , например, заполнить текстовый input с именем ID значением 123d456 , а другой текстовый input с именем VarXXX значением 09876\ - то сайт вернет ошибку со следущими подробностями:

SELECT `id`,`varAAA`,`varBBB`,`varCCC`,`varDDD` FROM `tableXXX` WHERE `varXXX`='09876\' AND `id`=123

Если же , например, заполнить текстовый input с именем ID значением 0xff , а другой текстовый input с именем VarXXX значением 09876\ - то сайт вернет ошибку со следущими подробностями:

SELECT `id`,`varAAA`,`varBBB`,`varCCC`,`varDDD` FROM `tableXXX` WHERE `varXXX`='09876\' AND `id`=0

Что можно полезного поиметь в этом случае ?

P.S.

названия INPUT-ов , а также названия столбцов и таблицы в БД умышленно мною изменены
 
Ответить с цитированием