GET传参 eval执行

使用通配符绕过

前提是题目过滤的字符不多。直接使用system函数(或其他)执行命令,文件名使用通配符模糊搜索即可

若过滤了system, 还可用反字节符配合echo。如echo `cat fla*`;

使用eval嵌套

题目过滤了主要函数(cat, system),并且过滤了字符 .

这里需要使用到的字符有_ 、[] 和 $

使用文件包含漏洞

题目过滤了主要函数,并且过滤了符号 . ' ` ; ( : < = / 和所有的数字

首先将需要传入的参数c设置为include语句,再在include的文件中使用php协议读取内容。

1
c=include$_GET[a]?>&a=php://filter/convert.base64-encode/resource=flag.php

这里使用了?>绕过 ;

也可以用data伪协议和日志注入

使用RCE绕过

见下

GET传参 include执行

使用data伪协议

base64加密可以绕过flag,php

1
c=data://text/plain;base64,PD9waHAgCnN5c3RlbSgidGFjIGZsYWcucGhwIikKPz4=

[!NOTE]

include中的拼接符没有任何作用。因为include中的文件在?>就已经进行闭合了,后续的任何代码都不会再执行了,只会报错

使用RCE绕过

过滤掉了除了 ();以外所有符号,以及所有数字

详见另一个笔记

POST传参 eval执行