Инъекция SQL с уязвимостью в нескольких кодировках mysql_escape_string для записи выходного файла

На прошлой неделе я пытался обойти SQL-запрос с помощью уязвимости PHP addlashes/mysql_escape с использованием языков с несколькими наборами символов.

Принимая во внимание следующий PHP-код, я пытаюсь манипулировать запросом с помощью инжекции для записи в выходной файл по своему выбору:

   $username = mysql_escape_string($_POST["puser"]);
   $password = mysql_escape_string($_POST["ppwd"]);

   $sql = "SELECT * FROM users WHERE username='$username' and password='$password'";

База данных использует кодировку gbk.

Я знаю, что, вставляя 0xbf27, я могу избежать одиночной кавычки, так как функция mysql_escape_string превращает код в 0xbf5c27, однако я не могу понять, как сделать рабочий запрос SQL для записи выходного файла с использованием этого метода.

Внедрение в параметр пароля, ближайший я могу получить следующее:

aaaa%Bf%27+UNION+SELECT+1+INTO+OUTFILE+%BF%27/tmp/sql.out

который выводит неверный синтаксический запрос как:

SELECT * FROM users WHERE username='000' and password='aaa縗' UNION SELECT 1 INTO OUTFILE 縗'/tmp/sql.log'

Недопустимый запрос из-за символа между параметром OUTFILE и именем файла, сгенерированным как часть внедрения.

Из того, что я прочитал в документации MySQL, говорится, что кавычки вокруг имени файла являются обязательными.

Есть ли способ использовать это для записи произвольного содержимого файла?

Любые мысли очень ценятся.

mcgeezer

0 ответов

Другие вопросы по тегам