CTFHub | 前端验证

文章介绍了两种方法绕过CTFHub平台的前端文件上传验证,包括禁用浏览器JavaScript来上传PHPpayload和利用Burpsuite抓包修改文件类型。同时提出了服务器端验证、文件头检查等安全修复建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0x00 前言

        CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。

        

        

0x01 题目描述

前端验证:

        (无)

网页显示内容

        

        

0x02 解题过程

        前端验证是通过对客户端输入数据的合法性进行检查来确保数据是有效且安全的。通常,它会通过一系列简单的规则,如长度检查、格式检查、正则表达式匹配等,验证用户输入是否符合要求,以提高应用程序的安全性和可用性。

        

0x1 方法一: 禁用浏览器JavaScript 

这里以火狐浏览器为例,首先需要在浏览器地址栏输入about:config并按回车

about:config

        

点击接受风险并继续后进入高级首选项搜索框界面

        

在高级首选项搜索框界面中搜索javascript.enabled,点击转换按钮将true值切换为false

javascript.enabled

        

true值改为false后,重新打开网页URL

        

编写payload

<?php @eval($_POST['CTFhub']);?>

        

在网页中上传编写好的一句话木马

        

打开蚁剑进行连接并添加到数据中

        

检查网页目录,发现此题flag

        

0x2 方法二: Burpsuite抓包 

使用ChatGPT对URL网页做一个简单的代码审计,根据ChatGPT的提示,发现此代码只做了前端验证,并未上传到服务器中,那么此题的思路可以是绕过前端验证。因为在代码部分白名单中仅有.jpg、.png、.gif文件。没有做太多的过滤。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>CTFHub 文件上传 - js前端验证</title>
</head>
<body>
    <h1>CTFHub 文件上传 - js前端验证</h1>
    <form action="" method="post" enctype="multipart/form-data" onsubmit="return checkfilesuffix()">
        <label for="file">Filename:</label>
        <input type="file" name="file" id="file" />
        <br />
        <input type="submit" name="submit" value="Submit" />
    </form>
<script>
function checkfilesuffix()
{
    var file=document.getElementsByName('file')[0]['value'];
    if(file==""||file==null)
    {
        alert("请添加上传文件");
        return false;
    }
    else
    {
        var whitelist=new Array(".jpg",".png",".gif");
        var file_suffix=file.substring(file.lastIndexOf("."));
        if(whitelist.indexOf(file_suffix) == -1)
        {
            alert("该文件不允许上传");
            return false;
        }
    }
}
</script>
</body>
</html>

        

上传一个伪装成白名单的文件绕过前端验证

        

上传成功后使用Burpsutie抓包工具进行抓包

        

修改抓取到的数据,将上传的一句话木马文件重新改为shell.php文件

        

传入木马数据成功后使用蚁剑连接

         

检查网页目录,发现此题flag

        

        

0x03 修复建议

[1].在服务器端对上传的文件进行验证,以确保上传的文件是被允许的类型,并且不包含恶意代码。

[2].不要仅仅依赖文件后缀名来验证文件类型,最好通过解析文件头或使用其他方法来确保上传的文件是被允许的类型。

[3].在使用 innerHTML 时,最好使用 DOM 操作而不是字符串操作,这样可以避免 XSS 攻击。

[4].在使用表单时,最好将 action 属性设置为表单处理程序的 URL,并使用 CSRF 令牌防止 CSRF 攻击。

[5].确保使用一致的变量名称,以使代码更易于阅读和理解。

        

        

0x04 总结

文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尼泊罗河伯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值