|
Постоянный
Регистрация: 16.11.2018
Сообщений: 620
С нами:
3943766
Репутация:
47
|
|
Сообщение от Samozvanec
↑
Доброго времени, уважаемые ачатовцы! Я начинаю изучать SQL-injection, при этом у меня есть базовые знания SQL синтаксиса, которые я продолжаю развивать, но пока они находятся на уровне написания не сложных запросов и понимания их работы, включая вложенные функции. Недавно просматривая забугорный PoC по sql-inj наткнулся на интересный запрос, который помог человеку обойти фильтрацию. А именно:
Код:
products.php?id=24 AND mod(53,12)/*!50000union*//**//*!50000select*/ 1,2,3,4,5,6,7,8,9,10%23
Мне не совсем понятно, как функция MOD помогла обойти фильтрацию UNION SELECT. Forbidden. Я знаю, что данная функция выводит нам остаток от деления. В указанном примере он получается 5. Но как это работает? Что происходит на бэке "за кулисами"? Для меня важно это понять.
Всем заранее спасибо!
В общем всё зависит от WAF/фильтра, но в целом достаточно просто, запрос
Код:
id=24 AND mod(53,12)/*!50000union*//**//*!50000select*/ 1,2,3,4,5,6,7,8,9,10%23
и нужно что-бы после AND было условие которое не равно нулю 53%12=5 т.е. если бы стояло mod(55,11)=55%11=0 и в этом случае условие не выполняется и соответственно скуля (энион) не будет выполнятся.
В конце концов выйдет так:
Код:
24 AND 5 UNION SELECT 1,2,3,4,5,6,7,8,,9,10#
Скорее всего фильтр вырезал значения типа 1=1, True, 1 и т.д. но пропускал функции. Вместо MOD можно было-бы вставить UNHEX(32), CONVERT..
|