SQL-инъекция? CHAR (45,120,49,45,81,45)

Я только что увидел, что это появилось в наших журналах запросов. Чего они добивались?

Полная строка запроса:

properties?page=2side1111111111111 UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45) -- /*

Изменить: поскольку поиск в Google не возвращал ничего полезного, я хотел задать вопрос для людей, которые сталкиваются с тем же.

Ответы

Ответ 1

Это просто тест для инъекций. Если злоумышленник может видеть xQ в выводе, то они знают, что инъекция возможна.

В этом конкретном запросе нет "риска".

Разработчик не должен обращать внимания на какие-либо механизмы, форматы или значения механизмов инъекций - это не его бизнес.

Для всего бесконечного числа инъекций существует только one - неверно отформатированный запрос. Пока ваши запросы должным образом отформатированы, SQL-инъекции невозможны, Сосредоточьтесь на своих запросах, а не на методах SQL-инъекций.

Ответ 2

Функция Char() интерпретирует каждое значение как целое число и возвращает строку на основе заданных символов по кодовым значениям этих целых чисел. С помощью Char() значения NULL пропускаются. Эта функция используется в Microsoft SQL Server, Sybase и MySQL, а CHR() используется RDBMS.

Функция SQL Char() пригодится, когда (например) addslashes() для PHP используется как мера предосторожности в SQL-запросе. Использование Char() устраняет необходимость использования кавычек в запросе с инжектированием.

Пример кода PHP, уязвимого для SQL-инъекции с использованием Char(), будет выглядеть примерно так:

$uname = addslashes( $_GET['id'] );
$query = 'SELECT username FROM users WHERE id = ' . $id;

В то время как addslashes() был использован, script не выполняет надлежащую дезинфекцию ввода, так как нет отметки кавычки. Это может быть использовано с помощью следующей строки SQL-инъекции для загрузки файла /etc/passwd:

Источник: http://hakipedia.com/index.php/SQL_Injection#Char.28.29