DVWA-XSS靶场通关攻略
DVWA-XSS跨站脚本攻击
一、难度low
1.XSS(Reflected)
直接输入payload
成功弹窗
2.xss(Stored)
同上,直接在message框中输入payload即可
二、难度Medium
1.XSS(Reflected)
直接输入payload发现输出结果变了并且没有弹框
查看元素发现<script>被过滤了
再查看代码得知<script>被替换成空
看到替换成空,第一时间想到双写绕过!!!
成功弹窗
2.xss(Stored)
先查看代码,寻找过滤
addslashes():在特殊符号前加转义符
strip_tags:删除html标签
所以把name出作为突破口(过滤更简单)
在name出插入xss语句(要双写!),发现有长度限制,查看元素修改
成功弹窗
三、难度High
1.XSS(Reflected)
查看代码可知,使用了正则表达式(.* 任意字符任意长度),<script>会被替换成空
所以无法使用<script>标签了,可与改用<body>标签(其他标签也可以)
成功弹窗
实际上,标准写法为
也可以去掉引号/分号,因为html语言兼容性很高
preg、re、/xxxxx/x格式可能为正则表达式!!!
2.xss(Stored)
查看代码
与前面思路相同
在name框输入payload,且有长度限制,需要修改长度
成功弹窗
补充函数
①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)之前添加反斜杠的字符串,即进行了转义