文章目录
- 购买FLAG
- 日志里的FLAG
- 一只小蜜蜂
购买FLAG
随便登录admin进去,发现有充值和购买功能
但是试试充值发现不行
购买页面如下
bp抓包看看,发现value值可控
我们试试将其改为正数,发现成功
购买得到flag
日志里的FLAG
<?php
highlight_file(__FILE__);
print("FLAG就存在于日志文件里哦!");
if (isset($_GET['path'])) {
$path = $_GET['path'];
if (preg_match('/flag|\$|["\']/i', $path)) {
echo "错误";
} else {
$path = str_replace("log","", $path);
if (file_exists($path)) {
$content = file_get_contents($path);
echo highlight_string($content, true);
} else {
echo "文件不存在";
}
}
} else {
echo "请提供文件路径";
}
FLAG就存在于日志文件里哦!文件不存在
提示我们flag就在日志文件里,并且是nginx服务;然后过滤了log,我们直接双写绕过
payload
?path=/var/llogog/nginx/access.llogog
一只小蜜蜂
考点:BEEscms漏洞
打开题目,发现是BEEScms
去网上找一下相关文章,发现有后台登陆,文件上传等漏洞
扫一下目录,扫出登录地址
结果发现验证码显示不出来(开始以为题目问题)
然后就继续找文章,发现存在变量覆盖拿到admin用户的漏洞
BEEScms的includes/init.php部分源码
session_start();
if (isset($_REQUEST)){$_REQUEST = fl_value($_REQUEST);}
$_COOKIE = fl_value($_COOKIE);
$_GET = fl_value($_GET);
@extract($_POST);
@extract($_GET);
@extract($_COOKIE);
先设置了session_start(),创建会话。判断是否有输入来设置了cookie,fl_value进行一些简单的过滤,使用request设置cookie, G E T = f l v a l u e ( _GET = fl_value( GET=flvalue(_GET);来过滤get请求的内容,但是没有过滤post请求,后面还都通过@extract()来引入变量,进行变量的覆盖操作,那么这样就可以post方法传递session。二者配合构造session来绕过登录限制
payload如下
_SESSION[login_in]=1&_SESSION[admin]=1_SESSION[login_time]=100000000000000000000000000000000000
在下面这个页面POST传参
传参完后直接访问./admin
或者是./admin/admin.php
成功getshell
然后找到存在文件上传漏洞的界面
这里会检测MIME,我们上传一句话木马后bp抓包,修改MIME即可绕过
结果这里不知道上传到哪了。。
换了个解法,直接访问./admin/upload.php
和刚刚一样上传一句话木马修改MIME
然后知道上传路径为/img/.php
,访问得到flag