IThome 2024 鐵人賽 一直刷 CTF - Day19

前言

本日進度:

Lab-login

題目很好心把他會查詢的指令列出來了,可以發現他都有用 () 包起來,所以截斷的時候要注意要把 ) 也帶上,就能順利 Injection 了。

Image
Image

Dig Arguments

他有提供網站的原始碼,是用 flask 建的,下面這個是主要邏輯

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@app.route("/", methods=["GET", "POST"])
def dig():
dig_result = None
if request.args.get("debug"):
return send_file(__name__ + ".py")
if request.method == "POST":
hostname1 = request.form["hostname1"]
hostname2 = request.form["hostname2"]
process = subprocess.Popen(
["dig", hostname1, hostname2],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
output, _ = process.communicate()
dig_result = output.decode()

return render_template("index.html", request=request, dig_result=dig_result)

["dig", hostname1, hostname2] 這樣的寫法會讓我們打算 injection

講師給了一個 酷酷網站 ,可以查到很多利用一些本來應該不是用來讀檔或執行指令的 的指令來 bypass 的方法,就找到了這個東東,按照這個方法就可以讀到 flag 了。

Image
Image

參考資料