当前位置: 首页 > news >正文

数据网站建设多少钱重庆平台网站建设工作

数据网站建设多少钱,重庆平台网站建设工作,网站关键词选取的方法,除了红动中国还有哪些设计网站目录 第19关 文件上传(畸形文件) 1.打开靶场 2.源码分析 (1)客户端源码 (2)服务器源码 3.渗透实战 (1)构造脚本 (2)双写绕过 (3)访问脚本 本文通过《…

目录

 第19关 文件上传(畸形文件)

1.打开靶场

2.源码分析

(1)客户端源码

(2)服务器源码

3.渗透实战

(1)构造脚本

(2)双写绕过

(3)访问脚本


本文通过《webug4.0靶场第19文件上传之畸形文件》对客户端前端和服务端的代码进行审计,基于代码审计来分析渗透思路并进行渗透实战。

 第19关 文件上传(畸形文件)

1.打开靶场

进入webug4.0靶场的第19关卡文件上传(畸形文件),完整URL地址如下所示。

http://192.168.71.1/webug4/control/upload_file/upload_file_3.php

进入靶场后发现这是一个注册账号的页面,包含文件上传的功能,具体如下图所示。 

2.源码分析

(1)客户端源码

如下所示右键发现依旧存在客户端绕过,在前端通过js脚本使用白名单校验文件的后缀,具体如下所示。

(2)服务器源码

如下所示,查看upload_file_3.php代码,分析可知服务器端过滤了php关键字,可以通过双写法绕过。

<?php
// 引入公共配置文件,该文件可能包含了一些全局的常量、函数或配置信息
require_once "../../common/common.php";// 检查会话中是否存在 'user' 变量
// 如果不存在,说明用户未登录,将用户重定向到登录页面
if (!isset($_SESSION['user'])) {header("Location:../login.php");
}// 检查上传文件是否出现错误
// 如果存在错误,直接终止脚本执行
if ($_FILES['file']['error']) {die();
}// 检查是否有文件上传
if ($_FILES['file']) {// 将上传文件的相关信息存储在 $arr 数组中$arr = $_FILES['file'];// 获取上传文件的扩展名,并转换为小写// strrchr 函数用于返回文件名中从最后一个点开始的部分// trim 函数用于去除字符串首尾的空白字符$file_ext = trim(strtolower(strrchr($arr['name'], ".")));// 检查扩展名中是否包含 'php'// 如果包含,则将 'php' 从扩展名中移除if (strstr($file_ext, "php")) {$file_ext = str_replace("php", "", $file_ext);}// 检查目标上传目录中是否已经存在同名文件// TPMELATE 可能是一个定义在公共配置文件中的常量,表示模板目录路径if (file_exists(TPMELATE."/upload/".$arr['name'])) {// 如果文件已存在,弹出提示框告知用户echo "<script>alert('该文件已经存在')</script>";} else {// 如果文件不存在,为上传文件生成一个新的文件名// 使用 time() 函数生成一个时间戳,确保文件名的唯一性// iconv 函数用于将文件名从 UTF-8 编码转换为 gb2312 编码$filename = iconv("UTF-8","gb2312",TPMELATE."/upload/".time().$file_ext);// 将上传的临时文件移动到指定的目标路径move_uploaded_file($arr["tmp_name"], $filename);// 输出上传文件的完整路径,并终止脚本执行echo $filename;die();}
}// 引入上传文件的 HTML 页面
require_once TPMELATE."/upload_file_1.html";

这段 PHP 代码的主要功能是处理文件上传操作,整个代码的主要处理逻辑如下所示。

  • 登录验证:检查用户是否已登录,如果未登录则重定向到登录页面。

  • 错误检查:检查上传文件是否出现错误,如果有错误则终止脚本。
  • 文件扩展名处理:获取上传文件的扩展名,并尝试将字符串php替换为空(删掉文件名中的php字符串),以防止上传 PHP 脚本文件。
  • 文件存在性检查:检查目标上传目录中是否已经存在同名文件,如果存在则提示用户。
  • 文件上传:如果文件不存在,则为上传文件生成一个新的文件名,并将临时文件移动到指定的目标路径。
  • 页面引入:最后引入上传文件的 HTML 页面。

不过这段代码存在文件上传绕过的可能性,主要原因如下:

  • 扩展名过滤不严格:代码只是简单地将扩展名中的 php 字符串移除,而没有对扩展名进行全面的白名单验证。攻击者可以通过构造特殊的扩展名,如 .pphph,在移除 php 后仍然保留 .php,从而可能渗透成功
  • 编码转换问题:使用 iconv 函数将文件名从 UTF-8 编码转换为 gb2312 编码,可能会导致文件名被截断或出现乱码,攻击者可以利用这一点绕过文件类型检查。
  • 缺乏文件内容验证:代码只检查了文件的扩展名,没有对文件的实际内容进行验证。攻击者可以将恶意代码嵌入到图片或其他允许的文件类型中,形成图片马,从而绕过扩展名检查。

3.渗透实战

由于对文件的检查是客户端处理,故而可以在客户端上传图片,绕过客户端的前端检查然后在bp中修改报文并将报文后缀改为info.pphphp 发送到服务器。

(1)构造脚本

将info.php修改为info.jpg,这样的话可以绕过前端的检查,如下所示。

bp开启拦截功能,firefox浏览器开启代理。

(2)双写绕过

将info.jpg上传,并使用bp抓包,同时将报文发送给repeater。

接下来将info.jpg改名为info.pphphp并点击发送,如下所示。

根据上图burpsuite工具中的response文件上传路径如下所示。

D:/web/phpstudy_pro/WWW/webug4/template/upload/1669881408.php

(3)访问脚本

访问上传的脚本,URL地址如下所示。

http://192.168.71.1/webug4/template/upload/1669881408.php

如下所示双写绕过成功,获取到了服务器的php版本信息。

http://www.dtcms.com/a/545652.html

相关文章:

  • 企业网站管理系统使用教程微信小程序开发文档下载
  • MATLAB复杂曲线曲面造型及导函数实现
  • OpenAI首发AI浏览器,互联网流量格局如何重塑
  • 【1.3】costas环的MATLAB仿真与测试
  • 使用FormData上传图片和JSON数据注意事项
  • HBase 核心架构和增删改查
  • 网站建设尚品网站怎么做gps定位
  • js中如何隐藏eval关键字?
  • 做百度网站一年多少钱儿童教育网站怎么做有趣
  • 一家装修的网站怎么做的购买马来网站域名
  • 游戏平台网站制作网站建设费用是否资本化
  • Rust Option 与 Result深度解析
  • 湖南官网网站推广软件自己用钢管做里闪弹枪视频和照网站
  • 记一次 pm2 部署 spa 的坑
  • 做网站的时候卖过假货而出过事wordpress固定连接不能访问
  • Linux安装mysql8.4.6
  • Explain执行计划
  • 江门市住房城乡建设局网站php网站搬家软件
  • 从官方示例学习使用 CloudSim
  • 会外语和做网站制作微信网站模板免费下载
  • 优秀shell脚本搜集——筑梦之路
  • uniapp 实现一个底部悬浮面板
  • 中国桥梁空间分布数据
  • MutableStateFlow、StateFlow、LiveData在Compose中的运用
  • 网站建设的总结与评价专业定制网站开发公司
  • 应对AI全球化部署挑战:南凌科技云连接服务实现算法模型全球稳定传输
  • 公司网站建设岗位手机软件定制开发公司
  • 网站推广app软件一级注册工程师
  • LeetCode算法日记 - Day 87: 单词拆分
  • 学术论文写作与发表精讲:融合AI工具的高效方法与实战案例