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

用mvc做网站的缺点seo诊断工具有哪些

用mvc做网站的缺点,seo诊断工具有哪些,wordpress中小型门户,免费asp主机网站目录 一、::$DATA 1、数据流 2、::$DATA技术定位 3、::$DATA与数据流的关系 4、::$DATA特殊处理规则 二、源码分析 1、代码审计 2、str_ireplace(::$DATA, , $file_ext) 3、渗透思路 三、渗透实战 1、构建脚本test9.php 2、打开靶场 3、bp开启拦截 4、点击上传 …

目录

一、::$DATA

1、数据流

2、::$DATA技术定位

3、::$DATA与数据流的关系

4、::$DATA特殊处理规则

二、源码分析

1、代码审计

2、str_ireplace('::$DATA', '', $file_ext)

3、渗透思路

三、渗透实战

1、构建脚本test9.php

2、打开靶场

3、bp开启拦截

4、点击上传

5、bp拦截

6、后缀名增加::$data

7、发包并获取脚本地址

8、访问脚本


本文通过《upload-labs靶场通关笔记系列》来进行upload-labs靶场的渗透实战,本文讲解upload-labs靶场第9关文件特殊字符(::$data)绕过渗透实战。

一、::$DATA

1、数据流

Windows NTFS(New Technology File System)文件系统中,存在一种名为 “NTFS 数据流(NTFS Alternate Data Streams,简称 ADS)” 的特性。数据流分为主数据流和备用数据流,具体定义和区别如下。

比较项目主数据流备用数据流
定义文件的主要数据部分,包含文件的实际内容,是常规操作中直接与文件交互时访问的数据NTFS 文件系统中允许文件拥有的除主数据流之外的附属数据流,用于存储与文件相关的额外信息
表示方法
  • 传统文件操作直接访问的内容

  • 在资源管理器中可见的标准文件内容

  • 使用简单文件名访问(如document.txt

  • 使用filename:streamname格式标识

  • 不显示在常规文件大小统计中

存储内容文件的核心内容,如文本文件的文字、图像文件的图像数据等文件的属性信息、版本控制数据、链接数据等,也可被用于特殊应用场景或功能实现,但一般不存储文件的核心内容

2、::$DATA技术定位

::$DATA就是用来标识文件的主数据流的符号。简单来说,一个文件在 NTFS 系统中可以有多个数据流,主数据流是我们通常理解的文件内容,而其他数据流可以用来存储额外的信息。在window的时候如果文件名+::$DATA会把::$DATA之后的数据当成文件流处理,不会检测后缀名。

  • 正式名称:默认数据流标识符

  • 作用:显式指定访问文件的数据流部分

  • 完整语法:filename::$DATA

3、::$DATA与数据流的关系

访问方式实际指向
test.txt隐式访问主数据流
test.txt::$DATA显式访问主数据流
test.txt:secret访问名为"secret"的备用数据流

4、::$DATA特殊处理规则

  • 自动省略:Windows Explorer和大多数API会自动忽略::$DATA

  • 存储影响:file.exe::$DATA实际存储为file.exe

二、源码分析

1、代码审计

进入upload-labs靶场的第9关,源码如下所示。

接下来对代码进行分析,第9关卡同样是黑名单过滤,与第6、7、8关卡一样,相对于第四关和第五关,将“.htacess和.ini”后缀均过滤了,故而无法用第四关和第五关的方法进行渗透。然而相对于第六关卡、第七关卡和第八观看,缺少了一个$file_ext = str_ireplace('::$DATA', '', $file_ext);这行代码的处理,即没有对特殊字符“::$DATA”进行理。经过详细注释的代码如下所示。

<?php
// 初始化变量,用于标记文件是否上传成功,初始值为 false 表示未上传成功
$is_upload = false;
// 初始化变量,用于存储上传相关的提示信息,初始值为 null
$msg = null;// 检查是否通过 POST 方式提交了名为 submit 的表单元素
if (isset($_POST['submit'])) {// 检查上传文件保存的目录(由 UPLOAD_PATH 常量指定)是否存在if (file_exists(UPLOAD_PATH)) {// 定义一个数组,存储不允许上传的文件扩展名$deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini");// 获取上传文件的原始文件名,并去除文件名首尾的空白字符$file_name = trim($_FILES['upload_file']['name']);// 调用 deldot 函数,删除文件名末尾的点$file_name = deldot($file_name);// 获取文件的扩展名(从文件名中最后一个点开始截取)$file_ext = strrchr($file_name, '.');// 将文件扩展名转换为小写字母形式$file_ext = strtolower($file_ext); // 去除文件扩展名首尾的空白字符$file_ext = trim($file_ext); // 检查文件扩展名是否不在禁止上传的扩展名数组中if (!in_array($file_ext, $deny_ext)) {// 获取上传文件在服务器临时存储的路径$temp_file = $_FILES['upload_file']['tmp_name'];// 生成上传文件的目标路径,包含目录、时间戳、随机数和文件扩展名$img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;// 将临时存储的上传文件移动到目标路径if (move_uploaded_file($temp_file, $img_path)) {// 如果移动成功,标记文件上传成功$is_upload = true;} else {// 如果移动失败,设置提示信息为上传出错$msg = '上传出错!';}} else {// 如果文件扩展名在禁止上传的数组中,设置提示信息为文件类型不允许上传$msg = '此文件类型不允许上传!';}} else {// 如果上传目录不存在,设置提示信息为该目录不存在并提示手工创建$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';}
}
?>

2、str_ireplace('::$DATA', '', $file_ext)

根据上一步的分析,本关卡缺少如下函数的处理

str_ireplace('::$DATA', '', $file_ext);

这个语句的是PHP 中的一个字符串替换函数调用,其主要作用是在处理文件上传时,去除文件扩展名中可能包含的 ::$DATA 字符串,以防止攻击者利用 Windows NTFS 文件系统的数据流特性绕过文件上传的安全检查。 

如果文件名为test9.php::$DATA.jpg时,在windows中会删除::$DATA及之后的内容,则上传window服务器后的文件名为test9.php。

3、渗透思路

在windows操作系统中的搭建的upload-labs靶场中,由于文件名+"::$DATA"会把其之后的数据当成文件流处理,不会检测后缀名,而且保持":: $DATA"之前的文件名, 故而对于第9关,如果想上传“test9.php”文件,但是黑名单中过滤了“php”后缀,那么通过上传“test9.php:: $DATA”文件,最终可以绕过“php”黑名单后缀的检查,当存储到windows系统时会出现逻辑问题,并不会认为“test9.php:: $DATA”是个文件,而是认为这是个数据流,因为windows系统默认::$DATA 就是用来标识文件主数据流的符号,从而将文件存储为“test9.php”,实现绕过渗透。

三、渗透实战

1、构建脚本test9.php

<?php
phpinfo();
?>

2、打开靶场

 打开靶场第9关,浏览选择该脚本,但不点击上传。

3、bp开启拦截

4、点击上传

5、bp拦截

bp捕获到上传报文,下图红框的部分即为需要修改的文件名,需要将".php"后缀改为".php::$data",修改之前文件名为”test9.php“,如下所示

6、后缀名增加::$data

test9.php后添加一个"::$data",变为“test9.php::$data”,修改后效果如下所示。

7、发包并获取脚本地址

将bp的inception设置为off,此时修改后的报文发送成功。

回到靶场的Pass08关卡,图片已经上传成功,在图片处右键复制图片地址。

右键图片获取图片地址,如下所示获取到图片URL。 

http://127.0.0.1/upload-labs/upload/202504272154343717.php::$data

访问脚本时路径如下所示,去掉::$data,具体如下所示。

http://127.0.0.1/upload-labs/upload/202504272154343717.php

8、访问脚本

 如下所示访问上传脚本获取到服务器的php信息,证明文件上传成功。


文章转载自:

http://nsL6g2Qd.jjwzk.cn
http://USvSq9Yu.jjwzk.cn
http://YM10jFMA.jjwzk.cn
http://GauZMQdo.jjwzk.cn
http://EKJmX2xP.jjwzk.cn
http://3NjcUqXH.jjwzk.cn
http://1GR0rfaN.jjwzk.cn
http://sQmnBIiY.jjwzk.cn
http://lTX3t2rX.jjwzk.cn
http://jOZJEfps.jjwzk.cn
http://q4061uiz.jjwzk.cn
http://KakHQqUF.jjwzk.cn
http://e1IcF4ly.jjwzk.cn
http://2KgMptrA.jjwzk.cn
http://eULdliwP.jjwzk.cn
http://Qf8oei0u.jjwzk.cn
http://jBVUx5OT.jjwzk.cn
http://Um64tVD5.jjwzk.cn
http://WdGFJF2V.jjwzk.cn
http://OyA9bfPO.jjwzk.cn
http://o8hy4y5O.jjwzk.cn
http://8LO1bm81.jjwzk.cn
http://9VjMZoNa.jjwzk.cn
http://oVXagxdB.jjwzk.cn
http://1FFsRiGT.jjwzk.cn
http://sBE2ITAM.jjwzk.cn
http://vA9wFbzG.jjwzk.cn
http://qhTnHIGi.jjwzk.cn
http://DR4XHM7R.jjwzk.cn
http://3TDf2Gjm.jjwzk.cn
http://www.dtcms.com/wzjs/766399.html

相关文章:

  • 深圳营销型网站建设费用丰台网站制作公司
  • 企业品牌网站建设类型鲜花网站开发背景
  • 如何备份网站 整站建设电子商务系统网站
  • 网站底部设计源码网站实现留言功能吗
  • 轻松网站建设网站维护运营主要是做什么的
  • 自己可以做网站推广吗网站基本架构设计的主要步骤
  • 网站集约化建设 技术做js题目的网站知乎
  • 移动端网站的优势百度找不到我的网站了
  • 做网站的公司主要工作网站运营团队建设
  • 惠州建设厅网站怎样用flash做网站
  • 手机网站的建设价格wordpress主页显示分类
  • 华文细黑做网站有版权吗做个网站要多少钱建站费用明细表
  • 中国最新消息军事方面的婚纱摄影 网站关键词 优化
  • 崇明建设镇乡镇府网站义乌市企推网络科技有限公司
  • 做网站总结体会新蔡县城乡建设局网站
  • 一站式网站开发网站推广规划
  • 网站百度收录批量查询社区团购平台排名
  • 公司宣传网站制作服务器和电脑主机的区别
  • 湖州集团网站建设wordpress播放下载
  • 岳阳网站制作网站前台界面模板下载
  • 在社保网站做调动个人网页设计
  • 怎样快速提升网站权重wordpress主页 摘要
  • 手机网站建设商场wordpress购物车会员
  • 网站建设方案ppt上海圣品科技 做网站
  • 电子商务网站建设与实验广州比较好的广告公司有哪些
  • 个人网站不备案可以吗2008vps做网站
  • 兼职做网站访问量和数据大秦建设集团有限责任公司官方网站
  • 广州出名的网站关于网站建设的工作总结
  • 网站没制作好可以备案吗电子商务网站技术
  • 制作php网站用什么软件成都网站优化多少钱