feat(forensic): base task and flag accept

This commit is contained in:
cheeest 2025-04-08 23:00:54 +03:00
parent de78c5f8a0
commit 16adc1d99e
4 changed files with 49 additions and 6 deletions

16
app.py
View File

@ -3,6 +3,7 @@ from flask import Flask, render_template, request, url_for, session, redirect, g
import sqlite3
from random import getrandbits
from func import *
import base64
connection = sqlite3.connect('database.db')
cursor = connection.cursor()
@ -99,9 +100,20 @@ def fmetadata():
def forensic_task1():
return send_file(f'/tmp/task1/{session['task1_id']}.jpg')
@app.route("/forensic/base-guide")
@app.route("/forensic/base-guide", methods=('GET', 'POST'))
def fbase():
return render_template('base.html')
flag_task2 = session['flag_task2']
if request.method == 'POST':
user_flag = request.form['user_flag']
if user_flag == flag_task2:
return render_template('base.html', flag=flag_task2, success_flag='.')
return render_template('base.html', flag=flag_task2, error='Ошибка: неверный флаг!')
if not flag_task2:
session['flag_task2'] = flag_task2 = f'C4TchFl4g{{{hex(getrandbits(45))[2:]}}}'
base32str = str(base64.b32encode(flag_task2.encode()))[2:-1]
base64str = str(base64.b64encode(f"Ой-ой, похоже, что самое главное всё ещё зашифровано( {base32str}".encode()))[2:-1]
return render_template('base.html', base_task=base64str)
@app.route("/forensic/.docx_files", methods=('GET', 'POST'))
def fbinwalk():

View File

@ -5,4 +5,4 @@ def task1_flag(flag_task1, id):
if not os.path.exists('/tmp/task1'):
os.mkdir('/tmp/task1')
os.system(f'cp static/imgs/task1.jpg /tmp/task1/{id}.jpg')
os.system(f"exiftool -Comment='{flag_task1}' /tmp/task1/{id}.jpg")
os.system(f"exiftool -Comment='{flag_task1}' /tmp/task1/{id}.jpg")

33
templates/base.html Normal file
View File

@ -0,0 +1,33 @@
{% extends 'utils/_task.html' %}
{% include 'utils/_forensicsidenav.html' %}
{% block content %}
<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">
<p class="simpletext">На просторах небезызвестной ветки /b форума Двач я нашёл это.. Оно определённо точно напоминает мне <abbr class="hltext" title="Смотри подсказку(кнопка снизу слева)">какую-то кодировку</abbr>.. или их там сразу две? Поможешь разгадать эту загадку?</p>
<pre><code style="width: 35rem" class="codefont bash">{{ base_task }}</code></pre>
</div>
<div class="flag-input">
<h3 class="header" style="text-align:left">Введите ответ:</h3>
<form action="/forensic/base-guide" 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('forensic') }}" class="usable-context" style="text-align: canter; margin: 1rem; padding: 1rem;"> < Вернуться к заданиям > </a>
</div>
{% endif %}
{% endblock %}

View File

@ -12,15 +12,13 @@
</div>
<div class="flag-input">
<h3 class="header" style="text-align:left">Введите ответ:</h3>
<form action="/forensic/.docx_files" method="post" class="simpletext">
<form action="/forensic/hex" 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 %}