CTF-site-project/templates/path-traversal.html

44 lines
4.3 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% extends 'utils/_task.html' %}
{% block content %}
{% include 'utils/_websidenav.html' %}
<div id="popup" class="sql-guide capsule-window">
<p class="simpletext" style="text-align: left"><a class="hltext" href="https://portswigger.net/web-security/file-path-traversal">Path Traversal</a> - уязвимость, позволяющая пользователю получить доступ к файлам на хосте при помощи уязвимого параметра URL.</p>
<p class="simpletext" style="text-align: left">Как это работает? Для просмотра или скачивания файла на сайте есть условная кнопка, при нажатии на неё, в путь прибавляется параметр, аргумент которого - путь к файлу:<span class="context">(пример тега ниже)</span></p>
<pre><code class="codefont html"> &lt;button class="big_btn" onclick="location.href='/cats/download_cat?file=static/imgs/cat.jpg'"></code></pre>
<p class="simpletext" style="text-align: left">Да, это просто самый обычный путь, который без проверок принимается сервером, на что в ответ, пользователь получает запрошенный файл:<span class="context">(пример кода ниже)</span></p>
<pre><code class="codefont python"> filename = request.args.get("file")
return send_file(filename)</code></pre>
<p class="simpletext" style="text-align: left">Получается можно вписать туда что-то своё? Именно! В задании от нас хотят флаг, который лежит в <span class="mono">.txt</span> файле. Получается мы можем изменить параметр заменой <span class="mono">cat.jpg -> flag.txt</span></p>
<p class="simpletext" style="text-align: left">Есть и более жестокая эксплуатация сей уязвимости: можно откатиться на директории назад, дойти до корня и взять важный системный файл. Как это сделать? <span class="mono">../</span> вернёт нас на директорию назад. Так можем попробовать снова изменить путь: <span class="mono">cat.jpg -> ../../app.py</span>, что вернёт нам соответствующий <a calss="hltext" hraf="https://g.codrs.ru/Chest/CTF-site-project/src/branch/master/app.py">python файл</a></p>
<span class="close-btn usable-context" onclick="hidePopup()">скрыть</span>
</div>
<div class="container">
<div class="small capsule-window info1" style="height: auto;">
<p class="simpletext"><abbr class="hltext" title="Смотри подсказку(кнопка снизу слева)">Посмотри</abbr> файл и помоги решить задачку, но будь внимателен, стоит проверять, что происходит при нажатии на подозрительные кнопки. Флаг в соотвествующем .txt файле</p>
<button class="btn1" onclick="location.href='/web/path-traversal?file=static/imgs/cat.jpg'">
К изображению
</button>
</div>
<div class="flag-input">
<h3 class="header" style="text-align:left">Введите ответ:</h3>
<form action="/web/path-traversal" method="post" class="simpletext">
<input class="inpt" type="text" name="user_flag" style="width: 100%; height: 1.25rem; margin: 0">
<input type="submit" value="Submit" class="btn1" style="margin-top: 1.25rem">
</form>
</div>
</div>
{% if error %}
<div id="error"> <p>{{ error }}</p> </div>
{% elif success_flag %}
<div class="task-done">
<h1 class="header">Вы прошли задание!</h1>
<img class="done" src="{{ url_for('static', filename='imgs/done_icon.png') }}">
<a href="{{ url_for('web') }}" class="usable-context" style="text-align: canter; margin: 1rem; padding: 1rem;"> < Вернуться к заданиям > </a>
</div>
{% endif %}
{% endblock %}