|
Новичок
Регистрация: 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-ов , а также названия столбцов и таблицы в БД умышленно мною изменены
|