xss挑战之旅 level1-10
level1

直接尝试将<script>alert(1)</script>写入URL

leve2

先查看源码

看到value处的值"test",尝试在此处注入<script>alert(1)</script>
为了构造合法语句,需要先将双引号和尖括号闭合:
"><script>alert(1)</script>

level3

先输入上一题的playload,并查看源码:


发现两个含有输入值的地方都将尖括号进行了过滤,所以我们需要绕过尖括号来执行js语句,可以采用onfocus事件进行绕过
首先将单引号进行闭合,然后写入onfocus代码使在input输入框获取焦点时执行alert(1)产生弹窗。
'onfocus=alert(1)


单引号没有闭合,导致整个语法错误,使用//将其注释掉,只要oninput=alert(1)能够成功执行就好。
'onfocus=alert(1)//

点击输入框即可触发弹窗。
查看源码

虽然仍有错误,但是oninput=alert(1)语句成功执行。
level4

输入一段过滤测试代码:"'%&#></script><p class="onmouseover=" onmouseover="xx" onxxx="">xxx</p> 包含了经常会过滤的一些内容。
查看源码

发现同样是将尖括号进行了过滤,但是变成了双引号闭合,所以构造和上一题相似的语句,把单引号换成双引号。
"oninput=alert(1)//

level5
测试代码 "'%&#><s</script><p class="onmouseover=" onmouseover="xx" onxxx="">xxx</p>测试:

查看源码

发现对scrpit和on进行了过滤,在中间添加了下划线_
尝试大写进行绕过


查看源码

大写被转换成了小写,大写绕过失败
<a href="javascript:alert(1);">执行 JavaScript</a>


level6

尝试第五关的playload

看到两个有输入值的地方都做了过滤,尝试大写绕过


level7
尝试第六关的playload

查看源码

发现将输入的href和script进行了过滤,删除了整个href和script。猜测是对href和script字符串进行了检测并删除。尝试在将script字段中间插入script:scriscriptpt,href同理。这样当检测出script或href并删除后,仍然会存在script和href。
"><a hrhrefef="javascscriptript:alert(1);">执行 javascrscriptipt</a>

level8
尝试第七关的代码

发现input标签处对尖括号和双引号进行了过滤,href标签处对href和script和右尖括号、双引号进行了过滤。
href属性在使用时,为了能够正确解析一些有特殊的含义或功能特殊字符,如小于号(<)、大于号(>)、引号(”)、单引号(’)和和符号(&),可以使用html实体编码,来保证它们能够正确解析,所以href属性是可以解析经过html编码的内容。因此可以尝试将javascript:alert(1)语句进行html编码尝试绕过。
javascript:alert(1)


level9
随便尝试一段代码"><a hrhrefef="javascscriptript:alert(1);">执行 javascrscriptipt</a>然后查看源码

发现input标签处对双引号、尖括号进行了过滤。而href标签处提醒”您的链接不合法?有没有!”。因此可能需要构建一个合法的网址。搜索发现URL的合法格式需要包含协议名称http或者https,因此在链接中加入http://或者https://字符串进行尝试。

看到添加http://后,链接合法了。但是双引号被过滤了。使用第八关的html实体编码的方法。
输入:
http://">"javascript:alert(1)
结果并没有成功,查看源码

发现将http://以及后面整段都识别成了网址,而无法当成代码执行。因此不能将http://放在开头。尝试放在结尾处。

发现仍然识别成了网址而不是当作代码执行。尝试将http://注释掉。
javascript:alert(1) //http://

level10
先随便输入代码"><a hrhrefef="javascscriptript:alert(1);">执行 javascrscriptipt</a>

查看源码

发现h2 align标签处将双引号和尖括号进行了过滤而其他标签处都设置成了hidden.观察发现有三个输入字段t_link,t_history和t_sort。尝试从这三个输入字段进行输入,搜索发现隐藏的input标签可以插入type="text"显示 。首先构造?t_sort,尝试双引号闭合?t_sort" type="text"><a href="javascript:alert(1);">执行 JavaScript</a> ,


感觉是对尖括号进行了过滤,导致没有闭合,尝试在中间插入onfocus,避免需要输入尖括号:
?t_sort=" onfocus=javascript:alert() type="text

补充知识
-
onfocus事件
onfocus 事件在元素获得焦点时发生。
<input type="text" onfocus="alert(1)"> //当 input 输入框获取焦点时执行"onfocus="后的代码
-
a href标签法
href 属性规定链接指向的页面的 URL。
href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。如果用户选择了 <a> 标签中的内容,那么浏览器会尝试检索并显示 href 属性指定的 URL 所表示的文档,或者执行 JavaScript 表达式、方法和函数的列表。
href属性的意思是 当标签<a>被点击的时候,就会触发执行转跳,可以跳转一个网址、超链接或者触发执行一段javascript代码。
例:
//使用网址作为链接
<a href="https://www.w3school.com.cn">访问 W3School</a>
//使用图像作为链接
<a href="https://www.w3school.com.cn">
<img border="0" alt="W3School" src="/i/logo/w3logo.png" width="400" height="225">
</a>
//链接到JavaScript代码
<a href="javascript:alert('Hello World!');">执行 JavaScript</a>

浙公网安备 33010602011771号