网络安全 文件上传漏洞-1 第一关 Pass-01

在后续的关卡中,我们致力于绕过文件上传的白名单黑名单限制,成功提交一个一句话木马文件info.php,文件内容:

<?php
phpinfo();
?>

该代码的主要目的是查看目标服务器的php的信息。

点击第一关,并点击查看源码:

分析代码我们知,允许上传的文件类型只有jpg、png、gif三种(均为图片),然后发现使用了lastIndexOf和substring两个函数提取后缀名:

  • lastIndexOf是从字符串末尾开始检索,检索到子字符,则返回子字符在字符串中的位置(与之相对,indexof是从字符串开头检索)
  • substring函数用于返回子字符串,该子字符串始于指定索引处的字符,一直到此字符串索引末尾。
function checkFile() {
    var file = document.getElementsByName('upload_file')[0].value;
    if (file == null || file == "") {
        alert("请选择要上传的文件!");
        return false;
    }
    //定义允许上传的文件类型
    var allow_ext = ".jpg|.png|.gif";
    //提取上传文件的类型
    var ext_name = file.substring(file.lastIndexOf("."));
    //判断上传文件类型是否允许上传
    if (allow_ext.indexOf(ext_name + "|") == -1) {
        var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
        alert(errMsg);
        return false;
    }
}

在获得后缀名,我们使用Indexof函数进行检索其是否属于允许上传的文件类型。如果不在,则函数返回-1,然后报错。那么我们想到,如果令下面的if语句恒不成立,那么就不会执行后面的报错代码了

按住F12查看页面源码,在源代码中发现页面判断图像类型的script代码:

如果将 allow_ext.indexOf(ext_name) 改为1,这时候if语句恒不成立,那么便可以想穿什么类型就传什么类型:

发现不能在浏览器上直接修改,那么此时ctrl+s直接下载页面,保存到本地:

修改html源码:

将if判断改为 1=-1,恒不成立

然后打开寻改后的html文件:

点击文件上传发现没有反应

我们查看代码,发现两段代码。并发现第二段代码中,sumbit没有定义action,此时我们尝试对其进行修改:

为表单添加submit点击行为,受到第一段代码的启发:

使用" http://192.168.159.145/Pass-01/index.php"作为action的值,保存并打开html进行测试

选择一个php文件,发现能够成功上传,在www/upload文件夹中在也发现了我们上传的文件:

这时,我们右键单击想着复制图片链接(实际是一个php文件):

打开浏览器,复制链接并访问,发现一句话木马运行成功:

上一篇(网络安全 文件上传漏洞-0 实验环境部署安装

下一关(网络安全 文件上传漏洞-2 第二关 Pass-02

  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值