DVWA之反射型XSS代码审计

DVWA之反射型XSS代码审计目录lowmediumhighimpossible从整个cms的角度去分析这个漏洞low前端代码如下。定义了一个表达以get的方式发送请求形式为?name=。然后包含了一个$html的变量源码如下。array_key_exists()函数检查某个数组中是否存在指定的键名,如果键名存在则返回true,如果键名不存在则返回false。$_GET为超全局变量。直接将输入的name值赋值给变量$html然后前端再引用这个变量,所以触发xss<?php.

大家好,又见面了,我是你们的朋友全栈君。

目录

low

medium

high

impossible


从整个cms的角度去分析这个漏洞

low

前端代码如下。定义了一个表单以get的方式发送请求形式为?name= 。然后引用了一个$html的变量 

DVWA之反射型XSS代码审计

$html所在文件源码如下。array_key_exists() 函数检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false。$_GET为超全局变量。

直接将输入的name值赋值给变量$html然后前端再引用这个变量,所以触发xss

<?php

header ("X-XSS-Protection: 0");

// 如果$_GET中存在'name'这个键,说明点击了form表达的提交按钮。$_GET就是以数组的形式保存变量
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
	// Feedback for end user
	$html .= '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}

?

medium

可见在低级的基础上增加了str_replace()函数,将用户的输入中<script>关键字进行了过滤,所以可以考虑双写关键字进行绕过。我们也知道构造xss有以下几种方式,所以我也可以利用第二种和第三种方式进行弹窗

  • 利用<script>标签构造
  • 利用js伪协议:<a href=”javascript:alert(/xss/)”>touch me</a>
  • 利用html事件

DVWA之反射型XSS代码审计

 1. 双写<script>绕过

<scr<script>ipt>alert(/xss/)</scr<script>ipt>

2. 利用伪协议

<a href="javascript:alert(/xss/)">touch me</a>

 DVWA之反射型XSS代码审计

3. 利用html事件

<input type="button" onclick="alert(/xss/)" value="点我!">

 DVWA之反射型XSS代码审计

high

在中级的时候只是对<script>关键字进行了一次过滤,这里使用正则表达式对<script中的每一个词进行了无限次过滤,所以这里不能双写绕过。但是我们可以使用伪协议和产生html事件进行弹窗,和上一样 

DVWA之反射型XSS代码审计

impossible

可以看出多了user_token和session_token,这是防csrf的,因为经常是xss+csrf结合攻击。然后他对我们输入的内容用htmlspecialchars() 函数进行处理。这里主要看htmlspecialchars() 就行

DVWA之反射型XSS代码审计

htmlspecialchars()

htmlspecialchars()函数是使用来把一些预定义的字符转换为HTML实体,返回转换后的新字符串

  • &       转换为&amp
  • ”        转换为&quot
  • ‘         转换为成为 
  • <       转换为&lt
  • >       转换为&gt

xss构造的几种方式

  • 利用<script>构造,<>被转换了所以不行
  • 利用伪协议,需要用到<和单引号或者双引号,所以不行
  • 利用html事件,也需要用到<和单引号或者双引号,所以不行

如下,我们选中然后右键查看选中部分源码,发现被转换了,所以确实是impossible

DVWA之反射型XSS代码审计

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137360.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月2日 上午8:16
下一篇 2022年6月2日 上午8:16


相关推荐

  • IDEA20.3.1激活码(最新序列号破解)

    IDEA20.3.1激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    177
  • Android视频编码_安卓视频解码器

    Android视频编码_安卓视频解码器SVideoRecorder(https://github.com/yellowcath/SVideoRecorder)使用Android原生的MediaCodec进行视频录制,对比大量使用FFmpeg进行录制的库优点如下:体积小 :编译后的aar只有187K,ffmpeg一个so就7、8M,精简之后也差不多还有一半大小 速度快 :在huaweiP9上,720P的一帧:  FFmpeg编码…

    2022年8月31日
    4
  • IOS框架概览

    IOS框架概览

    2021年12月4日
    44
  • 一元线性回归-最小二乘法推导过程

    一元线性回归-最小二乘法推导过程设一元线性回归方程为,数据样本点为,要想使这n个样本点落在一元线性回归方程附近,不妨设误差为,使得没一个样本点落在一元线性回归方程上,因此有恒成立,所以回归直线应满足的条件是:实际值与回归估计值之间的误差平方和最小,即:此时令,原问题就转换成求解二元函数极小值问题,分别对求偏导:令上两式等于零,即最终求出两个数值,一元线性回归方程也就拟合出来了。…

    2022年5月17日
    64
  • SSE的学习

    SSE的学习看到intel向量化指令在矩阵乘应用中的评估_softee的专栏-CSDN博客中描述的效果而心动,然后咨询了下博客园博主,我稍微看了下《simdforc++developers》感觉SSE这些指令更像一种寄存器语言,乍一接触略不适应。然而我的疑问是:1、如果对一个步骤我用了TBB/MKL/CILK这种易操作的并行指令,内部能否再用SSE指令,能否性能进一步提升?或者像OMP一样不适合嵌套并行?2、这种向量化指令是否只对无依赖性流程可用?对dst(i)=src(i)+dst(i-1);…

    2025年6月17日
    7
  • linux 进程监控和自动重启的简单实现(转)

    linux 进程监控和自动重启的简单实现(转)

    2021年9月8日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号