利用php一些特性绕waf

Posted by bfpiaoran on December 25, 2018

 

测试代码 这个最简单只随便过滤了下 直接eval  文章重点不在于这里

 

正常利用system读取 肯定会被拦截

 

这里引申除了三个方法

第一种是 不使用system字符串的情况下使用该函数

https://secure.php.net/manual/zh/language.types.string.php

php有很多字符串表示方法

我们可以通过字符串调用函数

 

 

而方法可以不用” 或者’来表示

可以比如这样 (system)(“cat /etc/passwd”)

而这里不能出现system那么可以用其他方法连接

例如(sy.(st).em)

 

 

而最后一种方法我们可以使用$_GET[]变量   例如我发送  ?test1=system&test2=cat%20/etc/passwd&code=$_GET[test1]($_GET[test2]);

 

 

 

当然也可以加入一些注释

 

get_defined_functions

此PHP函数返回一个多维数组,其中包含所有已定义函数列表,包括内置(内部)和用户定义。内部功能可以通过$arr[“internal”]和用户定义的方式访问$arr[“user”]

 

这也是在不使用黑名单内名称实现其功能的一种方法

例如grep system获取到他的索引号并且使用它

 

 

 

那么我们完全可以用这个方法绕过他

 

 

 

字符串数组

PHP中的每个字符串都可以用作字符数组  可以使用语法$string[2]或者$string[-3]

 

偷一张图 自己写懒得写了