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代码审计

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • vue中父组件传值给子组件,父组件值改变,子组件不能重新渲染[通俗易懂]

    vue中父组件传值给子组件,父组件值改变,子组件不能重新渲染[通俗易懂]1在子组件中用watch()监听值的改变,不同的类型的要用不同的监听方法props:{echartStyle:{type:Object,default(){return{}}},titleText:{type:String,default:”},tooltipFormatt…

    2022年10月31日
  • Yii2 Call to a member function validateCsrfToken() on string

    Yii2 Call to a member function validateCsrfToken() on string

  • 中缀表达式转后缀表达式的方法,步骤和原理及后缀表达式运算方式

    中缀表达式转后缀表达式的方法,步骤和原理及后缀表达式运算方式中缀转后缀本文大部分资料参考慕课何钦铭老师的数据结构相关的慕课链接:表达式求值中缀表达式是最常用的算术表达式,运算符在运算数中间,运算需要考虑运算符优先级.后缀表达式是计算机容易运算的表达式,运算符在运算数后面,从左到右进行运算,无需考虑优先级,运算呈线性结构.先举个简单的转换例子2+9/3-5(前缀)->293/+5-(后缀)先进行乘除再进行加减运算规律,…

  • pythonpip安装第三方库失败_python安装第三方库失败问题

    pythonpip安装第三方库失败_python安装第三方库失败问题关于Python第三方库安装失败问题的解决方案相信很多刚开始入门Python的菜鸟们在安装python第三方库的时候,多多少少都会遇到一些安装失败的问题。下面,我将结合自身经验,分享一下在windows操作系统上此类问题的解决办法。一、清楚自己所安装的python版本(2.7或3.6,andmore);二、检查是否安装了pip;如果确认上面那两点都没有问题的话,就请往下看:1、使用Pyth

  • Q1营收利润大增,Take-Two如何掘金“次世代”?[通俗易懂]

    Q1营收利润大增,Take-Two如何掘金“次世代”?[通俗易懂]8月3日美股盘后,拥有GTA和2K等知名系列游戏的Take-Two(NASDAQ:TTWO)发布了截至2020年6月30日的2020财年第一季度的业绩报告。财报公布后次日,股价跳空高开,最终股价收于177.52美元,涨幅达5.87%。回顾近期走势,TTWO已连续创下历史新高,可见其一直深受投资者青睐。(图源:雪球)以下为近期核心数据表现:由于全球疫情居家,TTWO受益颇多。本季度无论是营收、净利润,还是各产品的销量均超过市场预期。此次财报有着许多亮点值得深入讨论,而除此之外,也希望随着新品推

  • pycharm添加解释器失败_pycharm更新python解释器

    pycharm添加解释器失败_pycharm更新python解释器求大神告知:Pycharm添加Python解释器提示:CannotsetupapythonSDKatPython3.8(untitled5)(H:\Python\python-3.8.2-amd64.exe).TheSDKseemsinvalid.并且Python一直出现ModifySetup怎么解决?…

发表回复

您的电子邮箱地址不会被公开。

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