网络安全 DVWA通关指南 DVWA Reflected Cross Site Scripting (反射型 XSS)

DVWA Reflected Cross Site Scripting (反射型 XSS)


文章目录

  • DVWA Reflected Cross Site Scripting (反射型 XSS)
    • XSS跨站原理
      • 反射型
    • Low
    • Medium
    • High
    • Impossible


参考文献

  • WEB 安全靶场通关指南

XSS跨站原理

当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就会导致跨站脚本漏洞。这个“跨”实际上属于浏览器的特性,而不是缺陷;

浏览器同源策略:只有发布Cookie的网站才能读取Cookie。

会造成Cookie窃取、劫持用户Web行为、结合CSRF进行针对性攻击等危害

反射型

出现在搜索栏,用户登录等地方,常用来窃取客户端的Cookie进行钓鱼欺骗。(需要用户去点击)

想要窃取cookie要满足两个条件:

1.用户点击攻击者构造的URL

2.访问被攻击的应用服务(即存在xss的网站)

Low

1、分析网页源代码

<?phpheader ("X-XSS-Protection: 0");
//这行代码实际上禁用了浏览器内置的XSS防护机制。现代浏览器通常会有一个XSS过滤器,默认开启,用于检测并阻止某些类型的反射型XSS攻击。将此值设为0意味着告诉浏览器不要进行任何自动的XSS防护。// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Feedback for end user$html .= '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}?>
//对用户输入的数据没有进行任何过滤或转义处理

2、输入<script>alert(/XSS/)</script>,弹出一个警告框显示“XSS”,这证明了XSS攻击的成功。

1、<script>alert(/XSS/)</script><script> 和 </script> 是HTML中的标签,用于定义JavaScript代码块的开始和结束。
alert() 是JavaScript的一个内置函数,用于显示带有一条消息的对话框。用户必须点击确定按钮才能关闭这个对话框并继续操作页面。

image-20240424173639685

image-20240424173657851

3、解决方案:

  • 对用户输入的数据进行适当的过滤或转义,可以使用PHP的htmlspecialchars()函数来转义特殊字符,确保它们被安全地显示为数据而不是被执行为代码:

    1$safeName = htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8');
    2$html .= '<pre>Hello ' . $safeName . '</pre>';
    
  • 同时,考虑是否真的需要禁用XSS防护头,除非有充分的理由,否则应保持浏览器的默认防护机制启用。

Medium

1、分析网页源代码

<?phpheader ("X-XSS-Protection: 0");// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Get input$name = str_replace( '<script>', '', $_GET[ 'name' ] );// Feedback for end user$html .= "<pre>Hello ${name}</pre>";
}?>
//str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写)。本例中的作用为将'<script>'替换为''。

2、因为str_replace() 函数区分大小写,可以将<script>中的字符改成大写

<scr<script>ipt>alert(/XSS/)</script>
//双写绕过
<ScrIpt>alert(/XSS/)</scRiPt>
//区分大小写
<script x>alert(/XSS/)</script y>
//绕过<script>

image-20240424181634960

image-20240424181648248

High

1、分析网页源代码

<?phpheader ("X-XSS-Protection: 0");// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Get input$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );
// preg_replace 是 PHP 中的一个函数,用于执行正则表达式的搜索和替换操作。
// 正则表达式:/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i
// /<...>/:定义了一个正则表达式的匹配模式,前后尖括号表示匹配任意字符直到遇到后面的字符。
// (.*):点号.表示匹配任意单个字符(除了换行符),后面跟着的*表示前面的模式可以重复零次或多次。因此,(.*?)组合在一起表示匹配任意数量的任意字符,但这里的懒惰量词*?并没有使用,实际是贪婪匹配.*。
// s, c, r, i, p, t:分别匹配这些字母,中间的.和*允许任意字符出现在这些字母之间。
// /i:这是一个修饰符,表示执行不区分大小写的匹配。// Feedback for end user$html .= "<pre>Hello ${name}</pre>";
}?>
// <script>标签被完全过滤

2、使用其它标签注入 JS 攻击脚本

1、<img src=x onerror=alert(/XSS/)><img src=x onerror=alert(1)> 这段代码是一种典型的跨站脚本攻击(XSS)示例,利用了HTML图像标签(<img>)的onerror事件来触发JavaScript代码执行。其工作原理如下:图像标签(<img>):此标签用于在网页中嵌入图片。正常情况下,src属性会指向一个图像文件的URL。src=x:这里的src属性被赋值为x,这是一个无效的图像URL。当浏览器尝试根据这个无效的URL加载图片时,自然找不到对应的资源,从而触发错误。onerror事件:这是HTML元素的一个事件属性,当指定的错误情况发生时(如图像加载失败),会执行紧跟在其后的JavaScript代码。在这个例子中,就是alert(1)。alert(1):这是一个简单的JavaScript语句,用于弹出一个包含数字1的警告框。在实际的XSS攻击中,这可能被替换为更复杂的恶意代码,用于盗取用户Cookie、重定向用户到恶意站点、执行恶意脚本等。2、<svg onload=alert(/XSS/)><svg onload=alert(/xss/)> 这段代码展示了另一种跨站脚本攻击(XSS)的载体,这次是利用SVG(可缩放矢量图形)元素的onload事件来触发JavaScript代码执行。其工作原理如下:SVG元素:SVG是一种用于定义矢量图形的XML标记语言,可以直接嵌入到HTML文档中。与普通的HTML元素一样,SVG元素也支持事件处理器,如onload。onload事件:在SVG中,onload事件会在SVG文档或者图像加载完成后触发。与HTML的<body onload="">类似,它提供了一个时机来执行指定的JavaScript代码。alert(/xss/):这里使用的JavaScript代码与之前的例子相似,目的是弹出一个警告框显示/xss/。但这里的/xss/实际上是正则表达式字面量,虽然作为alert函数的参数,它会被当作普通字符串显示,这不影响弹出警告框的效果,但表明攻击者可以嵌入更复杂的JavaScript逻辑,不仅仅是简单的字符串。攻击原理:当这段SVG代码被嵌入到一个网页中,一旦SVG图形加载完成,onload事件就会触发,并执行alert(/xss/), 弹出一个包含/xss/的警告框。实质上,这揭示了网页对用户输入数据处理不当,允许执行恶意脚本的风险。攻击者可以利用这一点,不仅限于弹窗,还可以执行任何JavaScript代码,实现更深层次的攻击,如窃取用户数据、操控页面内容、发起进一步的攻击等。

image-20240425123935752

Impossible

<?php// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Check Anti-CSRF tokencheckToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// Get input$name = htmlspecialchars( $_GET[ 'name' ] );// Feedback for end user$html .= "<pre>Hello ${name}</pre>";
}// Generate Anti-CSRF token
generateSessionToken();?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/52763.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鼎捷新一代PLM 荣膺维科杯 “2023年度行业优秀产品奖”

近日&#xff0c;由中国高科技行业门户OFweek维科网主办的“全数会2024&#xff08;第五届&#xff09;中国智能制造数字化转型大会暨维科杯工业自动化及数字化行业年度评选颁奖典礼”在深圳隆重举办。这不仅是中国工业自动化及数字化行业的一大品牌盛会&#xff0c;亦是高科技…

如何利用 CSS 渐变实现多样化背景效果

前言 总在平常看到像这样的图片 背景是如何实现的呢 背景效果的多样性和美观性直接影响用户体验。CSS 渐变为设计师提供了一种强大且灵活的方法来创建引人注目的背景。渐变是颜色之间平滑过渡的效果&#xff0c;通过调整渐变类型和设置&#xff0c;你可以轻松实现从简单到复杂…

DataWind将string类型转化为int类型的报错解决

一、现象&#xff1a; toInt64([kernel_wakeup_top_count_str]) 二、日志&#xff1a; 遇到&#xff1a;错误: 直连查询失败&#xff0c;内部异常:<class aeolus.aeolus.libs.exception.aeolus_base_exception.AeolusBaseException>: aeolus/logicQuery/logicQueryMysq…

【一分钟学C++】std::memory_order

竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生~ 公众号&#xff1a; C学习与探索 | 个人主页&#xff1a; rainInSunny | 个人专栏&#xff1a; Learn OpenGL In Qt 文章目录 写在前面为什么需要Memory OrderMemory OrderRelaxed OrderRelease-Acquire Order 写在前面 使用std::mem…

智慧交通基于yolov8的行人车辆检测计数系统python源码+onnx模型+精美GUI界面

【算法介绍】 智慧交通中&#xff0c;基于YOLOv8的行人车辆检测计数系统是一项高效、准确的技术解决方案。该系统利用YOLOv8这一先进的目标检测算法&#xff0c;结合深度学习技术&#xff0c;能够实时检测并准确计数道路上的行人和车辆。YOLOv8在保证检测速度的同时&#xff0…

物联网——DMA+AD多通道

DMA简介 存储器映像 某些数据在运行时不会发生变化&#xff0c;则设置为常量&#xff0c;存在Flash存储器中&#xff0c;节省运行内存的空间 DMA结构图 DMA访问权限高于cpu 结构要素 软件触发源&#xff1a;存储器到存储器传输完成后&#xff0c;计数器清零 硬件触发源&…

基于SpringBoot的甜品店管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的蛋糕甜品店管理系…

ARM----时钟

时钟频率可以是由晶振提供的&#xff0c;我们需要高频率&#xff0c;但是外部接高的晶振会不稳定&#xff0c;所有使用PLL&#xff08;锁相环&#xff09;来放大频率。接下来就让我们学习用外部晶振提供的频率来配置时钟频率。 一.时钟源的选择 在这里我们选择外部晶振作为时钟…

Golang | Leetcode Golang题解之第397题整数替换

题目&#xff1a; 题解&#xff1a; func integerReplacement(n int) (ans int) {for n ! 1 {switch {case n%2 0:ansn / 2case n%4 1:ans 2n / 2case n 3:ans 2n 1default:ans 2n n/2 1}}return }

Leetcode 109.有序链表转换二叉搜索树(Medium)

给定一个单链表的头节点 head &#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为 平衡 二叉搜索树。 示例 1: 输入: head [-10,-3,0,5,9] 输出: [0,-3,9,-10,null,5] 解释: 一个可能的答案是[0&#xff0c;-3,9&#xff0c;-10,null,5]&#xff0c;它表示所示的高度…

中秋假期也能及时回应客户:微信聚合管理系统,自动回复

中秋佳节是阖家团圆的日子&#xff0c;很多人选择在此期间休息放松。但作为一名职场人士&#xff0c;如何在假期中不遗漏客户咨询&#xff1f; 不妨试试这个WeBot助手&#xff0c;你可以进行微信自动回复设置&#xff0c;轻松实现假期与工作两不误。 同一界面聚合多个账号 通…

性能诊断的方法(四):自下而上的资源诊断方法和发散的异常信息诊断方法

关于性能诊断的方法&#xff0c;我们可以按照“问题现象—直接原因—问题根源”这样一个思路去归纳。我们先从问题的现象去入手&#xff0c;包括时间的分析、资源的分析和异常信息的分析。接下来再去分析产生问题现象的直接原因是什么&#xff0c;这里我们归纳了自上而下的资源…

Python爬虫使用实例-wallpaper

1/ 排雷避坑 &#x1f95d; 中文乱码问题 print(requests.get(urlurl,headersheaders).text)出现中文乱码 原因分析&#xff1a; <meta charset"gbk" />解决方法&#xff1a; 法一&#xff1a; response requests.get(urlurl,headersheaders) response.en…

Python异常处理:异常的捕获和处理(try, except, finally)①

文章目录 1. 异常处理的基本概念1.1 什么是异常&#xff1f;1.2 为什么需要异常处理&#xff1f; 2. Python异常处理语法2.1 try和except示例&#xff1a; 2.2 else示例&#xff1a; 2.3 finally示例&#xff1a; 3. 捕获多个异常示例&#xff1a; 4. 捕获所有异常示例&#xf…

反激电路中TL431光耦反馈参数的计算,环路设计思路

反馈的过程 当副边的输出电压升高时&#xff0c;TL431参考端电压&#xff08;R端&#xff09;电压也会升高&#xff0c;使得TL431的导通量增加&#xff0c;同时光耦内部的发光二极管流过的电流也会增大&#xff0c;进而使得光耦三极管导通量增加&#xff0c;相连的电源IC电压反…

【Linux】数据链路层

一、数据链路层引入 1.1 数据链路层的功能 在网络层中&#xff0c;我们使用IP协议进行通信&#xff0c;需要进行跨网络转发到目标主机&#xff0c;本质上就是一个报文经历了无数个子网&#xff0c;而数据链路层就是解决在一个子网中如何传输报文的问题。 数据链路层的功能是&a…

H5端接入萤石监控

官方文档 EZOPEN协议 下滑至-平台架构 web/h5端使用文档 <template><div :id"video-container${index}${index2}" class"w-full bg-black"></div> </template><script>export default {data() {return {EZVIZAToken:…

原型模式详细介绍和代码实现

&#x1f3af; 设计模式专栏&#xff0c;持续更新中&#xff0c; 欢迎订阅&#xff1a;JAVA实现设计模式 &#x1f6e0;️ 希望小伙伴们一键三连&#xff0c;有问题私信都会回复&#xff0c;或者在评论区直接发言 Java实现原型模式 介绍: 原型模式&#xff08;Prototype Patte…

视频监控平台中的视频处理核心技术揭秘:自动化监控与智能预警成为趋势?

随着科技的飞速发展&#xff0c;视频监控作为安全管理与信息获取的重要手段&#xff0c;其技术也在不断革新与优化。一个高效的视频监控平台&#xff0c;不仅依赖于先进的硬件设备&#xff0c;更离不开强大的视频处理技术作为支撑。在众多视频监控平台中&#xff0c;安防监控Ea…

Autosar(Davinci) --- 创建一个S/R类型的port(下)

前言: 前面章节我们讲解了S/R类型的Port如何创建,这一章节,我们着重讲一下生成的代码,以及我们如何添加代码让这些门与灯之间的关系产生连接。 一、CtSaDoor.c 在【Rte.c】的【IO_TASK】中我们可以看到,反复的判断Rte_Ev_Cyclic_IO_Task_0_200ms这个条件是否成立,当200…