XSS漏洞基础

xss漏洞的三个分类:

反射性:产生原因是用户输入的没用进行很好的过滤,导致用户的输入输出到前端页面上,前端把用户的输入给解析了,所以导致前端页面出现相应漏洞。前端页面是可以解析JS代码的,反射性漏洞就是利用JS代码。

DOM性:在JS中进行多次传参,导致漏洞出现

存储型

反射性漏洞:

在DVWA靶场进行实验(LOW):

1.输入普通字符串,根据后台代码,他会输出我们输入的字符串,这个是正常后端的工作流程。

2.我们在框里输入JS代码,使其显示不正规的输出,当然,也可以输入其他的代码,可以获得相应信息。可以用于测试的有许多种,如alert()、confirm()、prompt()等等。

html里面的js代码:

js代码在HTML代码的标签里面也是可以解析的,比如在<div>、<p>等等,但是有些并不能解析,如<style>、<textarea>、<title>等。

深入理解浏览器解析机制和XSS向量编码

在html代码里面,<a>标签是可以促发js代码的。

但是在日常中我们肯定会遇到一些过滤,所以我们需要对我们的代码进行另一种形式的输入。

基础部分

1.url解码

里面的内容经过url解码就是"javascript:alert(1)",但是在浏览器里面却解析不了

html 复制代码
<a href="%6a%61%76%61%73%63%72%69%70%74:%61%6c%65%72%74%28%31%29">aaa</a>

2.先html解码,后url解码

在这里,代码是先进行html实体解码,然后再url解码,这样在浏览器就可以正常访问。

对于1和2,我的理解是在进行浏览器访问时,1这个代码的href在进入url地址栏时,是原始状态,他对于这个没有解码的就不认识这个,所以就不会执行;对于第二个,这个原始代码的前一部分是html的编码,它在进行浏览器访问时,html对这个"&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;"先进行了解码成"javascript",然后href这一段代码进入url地址栏中,在url中它认识这个"javascript"协议,然后把会进行代码的识别,同时对后面的url码进行解码,就会正常执行。

html 复制代码
 <a href="&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:%61%6c%65%72%74%28%32%29">bbb</a>

3.把符号编码

URL 编码 ":",但这个也不能解析,因为javascript:是一个整体,(函数+:)才能被解析。

html 复制代码
<a href="javascript%3aalert(3)"></a>

4.src的错误函数触发

这里,当src里面是错误信息时,他会执行后面的错误函数onerror里面的内容。但这个也执行不了。

html 复制代码
<div><img src="1" onerror="alert(1)"></div>
html 复制代码
<div>&#60;img src=x onerror=alert(4)&#62;</div>

5.html实体编码

这个是&#39 html解码 ('),可以正常执行

html 复制代码
<button onclick="confirm('7&#39;);">Button</button>

6.unicode编码

这个并不能执行

html 复制代码
<button onclick="confirm('8\u0027);">Button</button>

7.在js代码里进行html编码

这里把html的编码放在js的标签里,并不能执行。

html 复制代码
<script>&#97;&#108;&#101;&#114;&#116;&#40;&#57;&#41;&#59</script>

所以以上的编码示例,向我们展示了前端的漏洞的千奇百怪之处,不同的标签,或不同的编码都会可能导致漏洞,但有些的标签和漏洞之间也会产生错误。

xss漏洞实例

https://xss.pwnfunction.com网站有相关xss漏洞的练习

1.Ma Spaghet!

题目要求是显示1337,并且不能使用交互式的触发等等

这里使用图片错误信息提示,在后面输入?somebody=<img%20src=1%20οnerrοr="alert(1337)">,显示成功。

2.Jefff

这里我们闭合eval里面的双引号,然后跳出,执行alert(1337)

就相当于我们是执行的以下命令

html 复制代码
eval(`ma = "Ma name aaa";alert(1337);""`)
相关推荐
brzhang几秒前
别再梭哈 Curosr 了!这 AI 神器直接把需求、架构、任务一条龙全干了!
前端·后端·架构
Kagol9 分钟前
TinyEditor v4.0 alpha 版本发布,更强大的表格、更丰富的表情、体验更好的图片/视频/文件上传功能
前端·开源
然我18 分钟前
路由还能这么玩?从懒加载到路由守卫,手把手带你解锁 React Router 进阶技巧
前端·react.js·面试
良木林1 小时前
JavaScript书写基础和基本数据类型
开发语言·前端·javascript
brzhang8 小时前
我操,终于有人把 AI 大佬们 PUA 程序员的套路给讲明白了!
前端·后端·架构
止观止8 小时前
React虚拟DOM的进化之路
前端·react.js·前端框架·reactjs·react
goms8 小时前
前端项目集成lint-staged
前端·vue·lint-staged
谢尔登9 小时前
【React Natve】NetworkError 和 TouchableOpacity 组件
前端·react.js·前端框架
Lin Hsüeh-ch'in9 小时前
如何彻底禁用 Chrome 自动更新
前端·chrome
augenstern41611 小时前
HTML面试题
前端·html