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

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

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

Всем привет! Решил опубликовать решение одного интересного таска, из категории Веб "Не Уцуцуга" , площадки Antichat.games .

Первое что мы видим это уровень сложности "Сложно" интрига, но мы знаем что мы сильнее этих машин =)

Заходим на сайт и видим форму регистрации



Сразу появляются какие то вектора в голове, но мы должны изучить полностью сайт, видим кнопку Register, тапаем по ней и регаемся



Заходим по своим кредам и видим страничку



Скажу сразу вектор я знал и он здесь очевиден для бывалых. После появления это странички портфолио с инфой я уже знал куда копать.
SQL injection будем пробовать. Из моего опыта я понимаю что это Фрагментированная инъекция. И есть несколько вариантов раскрутки именно этой инъекции, а способов может быть еще больше, будет показан один из них.

Инфы мало во "всемирной помойке" про эту инъекцию, но найти можно.
Вся фишка в том, что при каждом запросе нужно менять свои регистрационные данные, как? далее я покажу это, пробуем

Вставляем вот такой запрос в наше поле Profession , а в конце Email ставим \ символ.



Далее для простоты я использования burp suite
Вот наш запрос когда мы перехватываем его, видим наши данные которые передаются на сервер,так же обратите внимание на сам запрос как он сконфигурирован. здесь burp кодирует символы, но смысл думаю понятен. При каждом таком запросе и получения инфы, мы меняем данные на регу.



Мы зарегались, заходим по тем кредам которые вы указали и видим. Ура мы получили название базы. Не сложно. (Данные я немного изменил так как было много запросов после).



Складывается такая картина в голове, что есть какие то креды по которым нужно авторизоваться, и получить наш заветный флаг.
Из того что мы имеем это username и password это все что нам нужно в данном случае.
Делаем запрос на получение таблицы, не забываем менять данные на регу:
, (select table_name from information_schema.tables wheretable_schema=database()))-- -



Успех мы получили название нашей нужной таблицы



Чтобы получить название колонок придется указывать название таблицы в HEX или в CHAR, так как название указывается в кавычках, а они у нас не проходят.
Но мы уже в принципе понимаем что нам нужны две колонки это usrname и password.
Далее я застрял, тем же способом я не смог вывести данные, да и было бы просто. Далее я попросил небольшой хинт, и понял что данные можно вывести другой техникой. Я знал про нее, называется она DIOS(Dump In One Shot). Почитайте про нее, она правда крутая, и своеобразная.
Пробуем
,(select (@a) from (select(@a:=0x00),(select (@a) from
(portfolio_db.contractors)where (@a)in (@a:=concat(@a,username,password,0x3c62723e))))a))-- -
Получаем. нужны данные я успешно затер. Разобраться я думаю не сложно будет =)



Теперь выдыхаем и спокойно заходим под этими кредами



Оказался очень интересный таск, при прохождении много запросов крашилось, да и сайт не принимает большой запрос, приходилось приспосабливаться. Потребовалось время на все это, было увлекательно. Кстати с помощью Dios можно выводить так же данные, но вывести разом базу, таблицу и все колонки не получилось. Сайт просто не принимает такой длинный запрос, если у кого получилось отпишите будет очень интересно. В принципе все, вот такая комбинация. Такого вида инъекции можно раскручивать так же при помощи всем известных инструментов. В данном случае мы крутим в ручную.
Под конец вылезло такое =) еще один вектор? хм ...
Надеюсь было познавательно. И спасибо за внимание.

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

  #2  
Старый 21.08.2024, 05:56
h0ndry4
Новичок
Регистрация: 21.08.2024
Сообщений: 0
С нами: 912278

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

Можешь объяснить зачем нужен "\" в поле email? А так все остальное понятно.
 
Ответить с цитированием

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

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

Цитата:

h0ndry4 сказал(а):

Можешь объяснить зачем нужен "\" в поле email? А так все остальное понятно.

Отсутствие фильтрации символа
обратного слеша ("\") позволяет экранировать последующий символ одинарной
или двойной кавычки в запросе к БД. Это в свою очередь оставит строку
незавершённой, то есть не закрытой второй кавычкой. Скорее всего используется на беке функция preg_replace с удалением кавычки, но не бекслеша.
 
Ответить с цитированием

  #4  
Старый 22.08.2024, 05:50
h0ndry4
Новичок
Регистрация: 21.08.2024
Сообщений: 0
С нами: 912278

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

Цитата:

vov4ick сказал(а):

Отсутствие фильтрации символа
обратного слеша ("\") позволяет экранировать последующий символ одинарной
или двойной кавычки в запросе к БД. Это в свою очередь оставит строку
незавершённой, то есть не закрытой второй кавычкой. Скорее всего используется на беке функция preg_replace с удалением кавычки, но не бэкслеша.

Спасибо. Раз уж на то пошло то можешь объяснить как ты определил что надо использовать именно фрагментированную инъекцию? Просто я в этой теме совсем зеленый, лажу по форумам/сайтам, читаю посты такого же формата, пытаюсь понять как именно решается та или иная задача, куда автор обращает внимание для решения и куда стоит копать чтобы знаний набрать.
 
Ответить с цитированием

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

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

Цитата:

h0ndry4 сказал(а):

Спасибо. Раз уж на то пошло то можешь объяснить как ты определил что надо использовать именно фрагментированную инъекцию? Просто я в этой теме совсем зеленый, лажу по форумам/сайтам, читаю посты такого же формата, пытаюсь понять как именно решается та или иная задача, куда автор обращает внимание для решения и куда стоит копать чтобы знаний набрать.

При подстановке бекслеша в конце записи email, сервер выдал 500 ошибку, так же он не отвечал.Мне показалось это странным и я начал тестировать это поле. Если у тебя строк на запись как минимум две, то можно попробовать это сделать. Такие инъекции непросто найти, и в ряде случаев проэксплуатировать. Все зависит как написан бэкенд. В данном случае у нас черный ящик и мы просто тестируем разные варианты.
 
Ответить с цитированием

  #6  
Старый 23.08.2024, 04:38
h0ndry4
Новичок
Регистрация: 21.08.2024
Сообщений: 0
С нами: 912278

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

Цитата:

vov4ick сказал(а):

При подстановке бекслеша в конце записи email, сервер выдал 500 ошибку, так же он не отвечал.Мне показалось это странным и я начал тестировать это поле. Если у тебя строк на запись как минимум две, то можно попробовать это сделать. Такие инъекции непросто найти, и в ряде случаев проэксплуатировать. Все зависит как написан бэкенд. В данном случае у нас черный ящик и мы просто тестируем разные варианты.

Понял, спасибо.
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.