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);""`)
相关推荐
小远yyds9 分钟前
前端Web用户 token 持久化
开发语言·前端·javascript·vue.js
吕彬-前端1 小时前
使用vite+react+ts+Ant Design开发后台管理项目(五)
前端·javascript·react.js
学前端的小朱1 小时前
Redux的简介及其在React中的应用
前端·javascript·react.js·redux·store
guai_guai_guai1 小时前
uniapp
前端·javascript·vue.js·uni-app
bysking2 小时前
【前端-组件】定义行分组的表格表单实现-bysking
前端·react.js
独行soc2 小时前
#渗透测试#SRC漏洞挖掘#深入挖掘XSS漏洞02之测试流程
web安全·面试·渗透测试·xss·漏洞挖掘·1024程序员节
王哲晓2 小时前
第三十章 章节练习商品列表组件封装
前端·javascript·vue.js
fg_4113 小时前
无网络安装ionic和运行
前端·npm
理想不理想v3 小时前
‌Vue 3相比Vue 2的主要改进‌?
前端·javascript·vue.js·面试
酷酷的阿云3 小时前
不用ECharts!从0到1徒手撸一个Vue3柱状图
前端·javascript·vue.js