Compare commits
4 Commits
fb88fd9d67
...
84d3a7417b
Author | SHA1 | Date | |
---|---|---|---|
84d3a7417b | |||
74317aef47 | |||
34c42374b5 | |||
dc75b05877 |
23
app.py
23
app.py
@ -4,6 +4,7 @@ import sqlite3
|
|||||||
from random import getrandbits
|
from random import getrandbits
|
||||||
from func import *
|
from func import *
|
||||||
import base64
|
import base64
|
||||||
|
#Вот сюда тебе и надо, начинающий мастер OSINT'а! Только не смотри другие флаги: кто посмотрит, тот ***** :>
|
||||||
|
|
||||||
|
|
||||||
connection = sqlite3.connect('database.db')
|
connection = sqlite3.connect('database.db')
|
||||||
@ -24,6 +25,16 @@ app = Flask(__name__)
|
|||||||
app.config['SECRET_KEY'] = 'ca4ac4ada05f91a5790d2132992bfaed86df15c4d08f2dfe'
|
app.config['SECRET_KEY'] = 'ca4ac4ada05f91a5790d2132992bfaed86df15c4d08f2dfe'
|
||||||
DATABASE = 'database.db'
|
DATABASE = 'database.db'
|
||||||
|
|
||||||
|
@app.route("/osint/found_me", methods=('GET', 'POST'))
|
||||||
|
def osintfound():
|
||||||
|
Y0u_Fin4ly_F0und_7his = 'C4TchFl4g{Pls_supp0rt_my_pr0j3ct}'
|
||||||
|
if request.method == 'POST':
|
||||||
|
user_flag = request.form['user_flag']
|
||||||
|
if user_flag == Y0u_Fin4ly_F0und_7his:
|
||||||
|
return render_template('found-me.html', flag=Y0u_Fin4ly_F0und_7his, success_flag='.')
|
||||||
|
return render_template('found-me.html', flag=Y0u_Fin4ly_F0und_7his, error='Ошибка: неверный флаг!')
|
||||||
|
return render_template('found-me.html')
|
||||||
|
|
||||||
def get_db():
|
def get_db():
|
||||||
db = getattr(g, '_database', None)
|
db = getattr(g, '_database', None)
|
||||||
if db is None:
|
if db is None:
|
||||||
@ -55,6 +66,8 @@ def osint():
|
|||||||
@app.route("/web/sql-injection", methods=('GET', 'POST'))
|
@app.route("/web/sql-injection", methods=('GET', 'POST'))
|
||||||
def websql():
|
def websql():
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
|
if 'login' not in (keys := request.form.keys()) or 'pass' not in keys:
|
||||||
|
abort(400)
|
||||||
login = request.form['login']
|
login = request.form['login']
|
||||||
password = request.form['pass']
|
password = request.form['pass']
|
||||||
cursor = get_db().cursor()
|
cursor = get_db().cursor()
|
||||||
@ -174,9 +187,7 @@ def fhash():
|
|||||||
return render_template('hash.html', flag=flag_task5, error='Ошибка: неверный флаг!')
|
return render_template('hash.html', flag=flag_task5, error='Ошибка: неверный флаг!')
|
||||||
return render_template('hash.html')
|
return render_template('hash.html')
|
||||||
|
|
||||||
@app.route("/osint/questions")
|
|
||||||
def osintquestions():
|
|
||||||
return render_template('osint-questions.html')
|
|
||||||
|
|
||||||
@app.route("/osint/geoguessr")
|
@app.route("/osint/geoguessr")
|
||||||
def osintgeoguessr():
|
def osintgeoguessr():
|
||||||
@ -198,9 +209,9 @@ def success_login():
|
|||||||
return render_template('success-sql.html', flag=flag)
|
return render_template('success-sql.html', flag=flag)
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
@app.errorhandler(werkzeug.exceptions.NotFound)
|
@app.errorhandler(werkzeug.exceptions.HTTPException)
|
||||||
def handle_bad_request(e):
|
def error_handler(e):
|
||||||
return '<img src="https://http.cat/404.jpg">', 404
|
return f'<img src="https://http.cat/{e.code}.jpg">', e.code
|
||||||
|
|
||||||
app.run(host="0.0.0.0", debug=False)
|
app.run(host="0.0.0.0", debug=False)
|
||||||
connection.close()
|
connection.close()
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{% extends 'utils/_task.html' %}
|
{% extends 'utils/_task.html' %}
|
||||||
{% include 'utils/_forensicsidenav.html' %}
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
{% include 'utils/_forensicsidenav.html' %}
|
||||||
|
|
||||||
<div id="popup" class="sql-guide capsule-window">
|
<div id="popup" class="sql-guide capsule-window">
|
||||||
<p class="simpletext" style="text-align: left"><a href="https://habr.com/ru/articles/190054/" class="hltext">Кодировки Base64 и Base32</a> - метод представления бинарных данных в виде текста, однако часто используется во всяких загадках, ARG и CTF как "шифр"</p>
|
<p class="simpletext" style="text-align: left"><a href="https://habr.com/ru/articles/190054/" class="hltext">Кодировки Base64 и Base32</a> - метод представления бинарных данных в виде текста, однако часто используется во всяких загадках, ARG и CTF как "шифр"</p>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{% extends 'utils/_task.html' %}
|
{% extends 'utils/_task.html' %}
|
||||||
{% include 'utils/_forensicsidenav.html' %}
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
{% include 'utils/_forensicsidenav.html' %}
|
||||||
|
|
||||||
<div id="popup" class="sql-guide capsule-window">
|
<div id="popup" class="sql-guide capsule-window">
|
||||||
<p class="simpletext" style="text-align: left"><a href="https://encyclopedia.kaspersky.ru/glossary/docx/" class="hltext">.docx</a> файлы это примерно одно и то же, что простой .zip архив. Внутри него отдельными файлами хранятся шрифты, содержание, разметка и приложения, в общем - всё, что использовалось в документе.</p>
|
<p class="simpletext" style="text-align: left"><a href="https://encyclopedia.kaspersky.ru/glossary/docx/" class="hltext">.docx</a> файлы это примерно одно и то же, что простой .zip архив. Внутри него отдельными файлами хранятся шрифты, содержание, разметка и приложения, в общем - всё, что использовалось в документе.</p>
|
||||||
|
35
templates/found-me.html
Normal file
35
templates/found-me.html
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
{% extends 'utils/_task.html' %} <!--Тебе сюда!!!!-->
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
{% include 'utils/_forensicsidenav.html' %}
|
||||||
|
|
||||||
|
<div id="popup" class="sql-guide capsule-window">
|
||||||
|
<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></p>
|
||||||
|
</div>
|
||||||
|
<div class="flag-input">
|
||||||
|
<h3 class="header" style="text-align:left">Введите ответ:</h3>
|
||||||
|
<form action="/osint/found_me" 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('osint') }}" class="usable-context" style="text-align: canter; margin: 1rem; padding: 1rem;"> < Вернуться к заданиям > </a>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
<!--Дада, ты почти нашёл флаг.. Раз уж ты тут, может возьмёшь его напрямую из кода его одобрения? Только не смотри на другие флаги там! Так будет нечестно!-->
|
@ -1,13 +1,34 @@
|
|||||||
{% extends 'utils/_task.html' %}
|
{% extends 'utils/_task.html' %}
|
||||||
{% include 'utils/_forensicsidenav.html' %}
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
{% include 'utils/_forensicsidenav.html' %}
|
||||||
|
|
||||||
<div id="popup" class="sql-guide capsule-window">
|
<div id="popup" class="sql-guide capsule-window">
|
||||||
|
<p class="simpletext" style="text-align: left"><a class="hltext" href="https://manpages.ubuntu.com/manpages/trusty/ru/man5/shadow.5.html">Файл Shadow</a> - это системный файл в Linux, который хранит хэшированные пароли пользователей.</p>
|
||||||
|
<p class="simpletext" style="text-align: left">Shadow содержит в себе информацию в следующем виде:</p>
|
||||||
|
<pre><code class="codefont bash">username:password_hash:last_change:min:max:warn:inactive:expire:reserved
|
||||||
|
|
||||||
|
1 username - имя пользователя
|
||||||
|
2 password_hash - Хеш пароля :$алгоритм шифрования$соль$хеш:
|
||||||
|
3 last_change - Последнее изменение (в днях с 1970)
|
||||||
|
4 min - Минимум дней между сменами пароля
|
||||||
|
5 max - Максимум дней, через которые пароль надо сменить
|
||||||
|
6 warn - За сколько дней до истечения пароля предупредить
|
||||||
|
7 inactive - Сколько дней после истечения пароль остаётся активен
|
||||||
|
8 expire - День, когда аккаунт полностью истекает (в днях с 1970)
|
||||||
|
9 reserved - Зарезервировано для будущего использования
|
||||||
|
</code></pre>
|
||||||
|
<p class="simpletext" style="text-align: left">Открыв файл Shadow нужно найти хеш пароля суперпользователя - root. Строчка будет выглядеть так:</p>
|
||||||
|
<pre><code class="codefont bash">root:$5$$186cf774c97b60a1c106ef718d10970a6a06e06bef89553d9ae65d938a886eae:19111:0:::::</code></pre>
|
||||||
|
<p class="simpletext" style="text-align: left">Видно, что алгоритм хеширования - <span class="mono">$5$</span> - sha-256, а соли вовсе нет. Можно попробовать подобрать пароль к хешу.</p>
|
||||||
|
<p class="simpletext" style="text-align: left">Для подбора пароля можно использовать онлайн утилиты, по типу <a class="hltext" href="https://crackstation.net/">Crack Station</a> или утилитой по-типу <a class="hltext" href="https://hashcat.net/hashcat/">hashcat</a>(именно она базово предустановленна в Kali:
|
||||||
|
<pre><code class="codefont bash">hashcat -m 1470 [файл с хешом или сам хеш строкой] [словарь (в Kali базовый Rockyou)]</code></pre>
|
||||||
|
<p class="simpletext" style="text-align: left">Опция -m отвечат за тип хеша, в данном случае <span class="mono">1470 - sha-256</span></p>
|
||||||
<span class="close-btn usable-context" onclick="hidePopup()">скрыть</span>
|
<span class="close-btn usable-context" onclick="hidePopup()">скрыть</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="small capsule-window info1" style="height: auto">
|
<div class="small capsule-window info1" style="height: auto">
|
||||||
<p class="simpletext">На своей рабочей машине я смог достать этот <abbr class="hltext" title="Смотри подсказку(кнопка снизу слева)">файл</abbr>.. Я где-то слышал, что в нём есть то, что поможет мне стать админом - пароль или что-то вроде.. но Вместо пароля там написан какой-то бред!</p>
|
<p class="simpletext">На своей рабочей машине я смог достать этот <abbr class="hltext" title="Смотри подсказку(кнопка снизу слева)">файл</abbr>.. Я где-то слышал, что в нём есть то, что поможет мне стать админом - пароль или что-то вроде.. но Вместо пароля там написан какой-то бред!<span class="context" style="font-size: 0.9rem">(в ответ напиши C4Tch_Fl4g{сюда вставь пароль админа})</span></p>
|
||||||
<a href="{{ url_for('static', filename='shadow') }}" class="simpletext header" style="font-size: 1.6rem">Shadow</a>
|
<a href="{{ url_for('static', filename='shadow') }}" class="simpletext header" style="font-size: 1.6rem">Shadow</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="flag-input">
|
<div class="flag-input">
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{% extends 'utils/_task.html' %}
|
{% extends 'utils/_task.html' %}
|
||||||
{% include 'utils/_forensicsidenav.html' %}
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
{% include 'utils/_forensicsidenav.html' %}
|
||||||
|
|
||||||
<div id="popup" class="sql-guide capsule-window">
|
<div id="popup" class="sql-guide capsule-window">
|
||||||
<p class="simpletext" style="text-align: left">Любой файл можно представить в виде <a href="https://course.ugractf.ru/stegano/files.html" class="hltext">Hex-данных</a>.</p>
|
<p class="simpletext" style="text-align: left">Любой файл можно представить в виде <a href="https://course.ugractf.ru/stegano/files.html" class="hltext">Hex-данных</a>.</p>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<p class="simpletext">< Задания категории OSINT ></p>
|
<p class="simpletext">< Задания категории OSINT ></p>
|
||||||
<nav class="navbtn">
|
<nav class="navbtn">
|
||||||
{%- for name, descr in (
|
{%- for name, descr in (
|
||||||
('osintquestions', "Чур ответы не гуглить!"),
|
('osintfound', "Чур ответы не гуглить!"),
|
||||||
('osintgeoguessr', "Профессионал Яндекс-карт"),
|
('osintgeoguessr', "Профессионал Яндекс-карт"),
|
||||||
('osintrht', "Реально сложный таск"),
|
('osintrht', "Реально сложный таск"),
|
||||||
) %}
|
) %}
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
{% extends 'utils/_task.html' %}
|
|
||||||
{% include 'utils/_osintsidenav.html' %}
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
|
|
||||||
{% endblock %}
|
|
@ -1,6 +1,8 @@
|
|||||||
{% extends 'utils/_task.html' %}
|
{% extends 'utils/_task.html' %}
|
||||||
{% include 'utils/_websidenav.html' %}
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
{% include 'utils/_websidenav.html' %}
|
||||||
|
|
||||||
<div id="popup" class="sql-guide capsule-window">
|
<div id="popup" class="sql-guide capsule-window">
|
||||||
<p class="simpletext" style="text-align: left"><a class="hltext" href="https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html?highlight=sql%20inje#what-is-sql-injection">SQL-инъекция</a> - уязвимость системы, позволяющая пользователю ввести вредоносный код в SQL-запрос.<br />
|
<p class="simpletext" style="text-align: left"><a class="hltext" href="https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html?highlight=sql%20inje#what-is-sql-injection">SQL-инъекция</a> - уязвимость системы, позволяющая пользователю ввести вредоносный код в SQL-запрос.<br />
|
||||||
<p class="simpletext" style="text-align: left">Как именно это работает? Все дело в том, что данные, которые ввёл пользователь, вставляются в запрос напрямую <span class="context" style="font-size: 0.9rem">(пример кода с сервера ниже)</span></p>
|
<p class="simpletext" style="text-align: left">Как именно это работает? Все дело в том, что данные, которые ввёл пользователь, вставляются в запрос напрямую <span class="context" style="font-size: 0.9rem">(пример кода с сервера ниже)</span></p>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{% extends 'utils/_task.html' %}
|
{% extends 'utils/_task.html' %}
|
||||||
{% include 'utils/_forensicsidenav.html' %}
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
{% include 'utils/_forensicsidenav.html' %}
|
||||||
|
|
||||||
<div id="popup" class="sql-guide capsule-window">
|
<div id="popup" class="sql-guide capsule-window">
|
||||||
<p class="simpletext" style="text-align: left"><a href="https://portswigger.net/web-security/server-side-template-injection" class="hltext">SSTI (Server-side template injection)</a> - уязвимость, позволяющая внедрить код в шаблон, выполнив его на стороне сервера.</p>
|
<p class="simpletext" style="text-align: left"><a href="https://portswigger.net/web-security/server-side-template-injection" class="hltext">SSTI (Server-side template injection)</a> - уязвимость, позволяющая внедрить код в шаблон, выполнив его на стороне сервера.</p>
|
||||||
@ -62,7 +63,7 @@
|
|||||||
<div class="task-done">
|
<div class="task-done">
|
||||||
<h1 class="header">Вы прошли задание!</h1>
|
<h1 class="header">Вы прошли задание!</h1>
|
||||||
<img class="done" src="{{ url_for('static', filename='imgs/done_icon.png') }}">
|
<img class="done" src="{{ url_for('static', filename='imgs/done_icon.png') }}">
|
||||||
<a href="{{ url_for('forensic') }}" class="usable-context" style="text-align: canter; margin: 1rem; padding: 1rem;"> < Вернуться к заданиям > </a>
|
<a href="{{ url_for('web') }}" class="usable-context" style="text-align: canter; margin: 1rem; padding: 1rem;"> < Вернуться к заданиям > </a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -1,6 +1,7 @@
|
|||||||
{% extends 'utils/_task.html' %}
|
{% extends 'utils/_task.html' %}
|
||||||
{% include 'utils/_forensicsidenav.html' %}
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
{% include 'utils/_forensicsidenav.html' %}
|
||||||
|
|
||||||
<div id="popup" class="sql-guide capsule-window">
|
<div id="popup" class="sql-guide capsule-window">
|
||||||
<p class="simpletext" style="text-align: left"><a href="https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/index.html?highlight=metadata#metadata" class="hltext">Метаданные (Metadata)</a> - данные несущие информацию о других данных, например о каком-либо файле<br />
|
<p class="simpletext" style="text-align: left"><a href="https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/index.html?highlight=metadata#metadata" class="hltext">Метаданные (Metadata)</a> - данные несущие информацию о других данных, например о каком-либо файле<br />
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<nav class="navlink">
|
<nav class="navlink">
|
||||||
<a href="{{ url_for('index') }}" class="link">На главную</a>
|
<a href="{{ url_for('index') }}" class="link">На главную</a>
|
||||||
{%- for link, text in (
|
{%- for link, text in (
|
||||||
('osintquestions', "Чур ответы не гуглить!"),
|
('osintfound', "Чур ответы не гуглить!"),
|
||||||
('osintgeoguessr', "Мастер яндекс-карт"),
|
('osintgeoguessr', "Мастер яндекс-карт"),
|
||||||
('osintrht', "Реально сложный таск"),
|
('osintrht', "Реально сложный таск"),
|
||||||
) %}
|
) %}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user