1.1 Stage 5 限制输入长度注入XSS
http://xss-quiz.int21h.jp/stage--5.php?sid=4558a6085bab4b45184aab2e57fb77ae14e96786
1.1.1 页面分析
1.1.1.1 分析过程
- 提示信息:文本框长度限制
- 查看代码发现长度限制为15个字符
1.1.1.2 长度输入测试
只可以输入15个字符:
1.1.2 进行注入测试
1.1.2.1 修改页面输入长度
1.1.2.2 构建payload
"><script>alert(document.domain)</script>
1.1.2.3 执行payload
1.1.2.4 查看执行结果
1.2 Stage 6 限制输入<>注入XSS
http://xss-quiz.int21h.jp/stage-no6.php?sid=cd2ed4ec44b6953b15801b16c5a8b65743a1827e
1.2.1 页面分析
1.2.1.1 分析过程
- 提示信息:事件处理程序属性
- p1的值为输入的内容123,这里看到input是使用">闭合的
1.2.1.2 尝试注入
尝试使用" >进行闭合注入:123"> <script> alert(document.domain); </script>
可以看到JavaScript代码已经注入,但是我们发现<>符号都过滤成了>和<:
1.2.2 进行注入测试
1.2.2.1 构建value属性事件payload
我们使用双引号"来闭合value属性,然后添加一个事件,执行XSS脚本:
123" onmouseover="alert(document.domain)"
1.2.2.2 执行payload
1.3 Stage 7 限制输入“”注入XSS
http://xss-quiz.int21h.jp/stage07.php?sid=ef4991cb677f65e4f3b1a673c5bc662616ec586c
1.3.1 页面分析
1.3.1.1 分析过程
- 提示信息:几乎一样...但是有一点棘手
1.3.1.2 尝试注入
7和6的页面结构是一样的我们直接使用123" onmouseover= "alert(document.domain)",我们可以发现输入的所有信息都被当做字符串处理了,最重要的是value的值没有通过引号引起来,在我们输入的值外面有一对引号。
1.3.2 进行注入测试
1.3.2.1 构建payload
我们使用空格对payload进行分割,使用空格分割事件去掉所有引号:
123 onmouseover=alert(document.domain)
1.3.2.2 执行payload
1.4 Stage 8 JavaScript伪协议注入XSS
http://xss-quiz.int21h.jp/stage008.php?sid=7104970ae7ab939e5b6488849ba7425b748bb951
1.4.1 页面分析
1.4.1.1 分析过程
- 信息提示:javascript协议
- 输入的信息都存储在一个a标签中
1.4.2 进行注入测试
1.4.2.1 构建payload
我们结合Stage #8输入一个URL在页面中添加一个URL,这样我们可以输入一个JavaScript:伪协议,用户点击链接时直接调用JavaScript代码触发XSS攻击:
javascript:alert(document.domain)
1.4.2.2 执行payload
通过注入JavaScript伪协议,用户点击a标签的链接触发JavaScript代码:
