Croos-Site Scripting
XSS(跨站脚本)一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
类型:
- 反射型 XSS
- 存储型 XSS
- DOM 型 XSS
反射型 XSS(GET)
有输入框我们就可以试试一些 js 代码
1 | <script>alert("hello");</script> |
输入进去,我们可以看到,前端限制了长度
这个简单,这种就是用了 HTML 的语法限制。我们浏览器调试一下。把 maxlength 改成 100 甚至更大。
解决
这个题目有一个 GET,就是通过 URL 进行传输信息。
说明我们不仅可以通过修改 HTML 语法进行绕过,还可以通过修改 URL 进行绕过。
方法
- 修改 HTML
- 修改 URL
反射型 XSS(POST)
先看一下提示,我们获得了一个账号。
我们进去之后,可以输入那串 js 代码即可。
存储型 XSS
看到一个文本框,老规矩,先输入我们的 js 代码。
ok 可以。
并且每次刷新也不会消失。
DOM 型 XSS
可以看到,这次简单输入 js 代码不行了。
我们通过浏览器调试查看一下代码。
可以看到有一个 id 为 dom 的 div 框,里面将输入框里的文字放到了 href 里,就成了超链接。
解决办法
我们可以将 href 进行封闭,我们想要的的是:
1 | <a href=""></a><script>alert("hello");<script> |
之类的,我们再看看代码发现有一个 onclick=”domxss()”
我们进行搜索,可以发现函数
1 | function domxss(){ |
最重要的是
1 | "<a href='"+str+"'>what do you see?</a>" |
失败案例
1 | '</a><script>alert(1)</script>< |
看一下浏览器解析的,也没错,怎么没有弹窗?
当我们点击按钮时,发现我们的浏览器并没有刷新,自然 js 代码也不会被执行。
成功案例
我们需要写一些可以手动激活 alert 的 HTML 代码。比如 onlick 或者鼠标操作。
1 | ' onclick="alert(1)">< |
我们点击超链接,我们就手动激活了事件。成功!
DOM 型 XSS-X
这个一样用上面的
1 | ' onclick="alert(1)">< |
这个通过 GET 请求到 URL 上,然后通过 javascript 获取 URL 的 text 数据,最后放在超连接中。
XSS 之盲打
我们这次通过输入普通字符和一般的 js 代码都不会输出字符或者跳出弹窗。浏览器调用发现表单是 POST 请求的,没啥信息。看看提示,有一个后端。
进入,之后就有弹窗了。空白处就是弹窗的字符。
**原理:**通过 POST 请求保存在服务器上,可以在工作人员打开后端时执行 xss 代码。
XSS 之过滤
输入 1 是这样的
1 | 别说这些'1'的话,不要怕,就是干! |
输入<
1 | 别说这些'<'的话,不要怕,就是干! |
输入<script
1 | 别说这些''的话,不要怕,就是干! |
输入script>
1 | 别说这些'script>'的话,不要怕,就是干! |
可以发现,如果<script 的话,就会进行过滤。
方法 1:不用 JS
1 | </p>"<a href="#" onclick="alert(1)"</a> |
直接通过 DOM XSS 那章的知识进行绕过。
方法 2:使用 JS
使用 JS 那一般都需要








