DVWA-XSS靶场通关攻略

DVWA-XSS跨站脚本攻击

一、难度low

1.XSS(Reflected)

直接输入payload

1

成功弹窗

2

2.xss(Stored)

同上,直接在message框中输入payload即可

二、难度Medium

1.XSS(Reflected)

直接输入payload发现输出结果变了并且没有弹框

3

查看元素发现<script>被过滤了

4

再查看代码得知<script>被替换成空

5

看到替换成空,第一时间想到双写绕过!!!

6

成功弹窗

7

2.xss(Stored)

先查看代码,寻找过滤

8

addslashes():在特殊符号前加转义符

strip_tags:删除html标签

所以把name出作为突破口(过滤更简单)

在name出插入xss语句(要双写!),发现有长度限制,查看元素修改

9

成功弹窗

三、难度High

1.XSS(Reflected)

查看代码可知,使用了正则表达式(.* 任意字符任意长度),<script>会被替换成空

10

所以无法使用<script>标签了,可与改用<body>标签(其他标签也可以)

11

成功弹窗

13

实际上,标准写法为

12

也可以去掉引号/分号,因为html语言兼容性很高

preg、re、/xxxxx/x格式可能为正则表达式!!!

2.xss(Stored)

查看代码

14

与前面思路相同

在name框输入payload,且有长度限制,需要修改长度

15

成功弹窗

补充函数

①trim(string,charlist)函数移除字符串两侧的空白字符或其他预定义字符,预定义字符包括、\t、\n、\x0B、\r以及空格,可选参数charlist支持添加额外需要删除的字符

②mysql_real_escape_string(string,connection)函数会对字符串中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义

③stripslashes(string)函数删除字符串中的反斜杠

④htmlspecialchars函数把预定义的字符&、”、 ’、<、>转换为HTML 实体,防止浏览器将其作为HTML 元素去执行

⑤preg_replace()函数用于正则表达式的搜索和替换,这使得双写绕过、大小写混淆绕过(正则表达式中i表示不区分大小写)不再有效

⑥strip_tags() 函数剥去字符串中的HTML、XML以及PHP的标签,但允许使用标签

⑦addslashes() 函数返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串,即进行了转义

posted @ 2023-01-07 21:36  佐迦  阅读(507)  评论(0编辑  收藏  举报