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);""`)
相关推荐
lpfasd1232 小时前
node-sass 停止维护!老项目迁移 Dart Sass 完整教程
前端·rust·sass
Data analyse4564 小时前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
xiaogai_gai4 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
环境栈笔记5 小时前
指纹浏览器 WebRTC 怎么设置?从 ICE 候选、代理出口到功能验证
前端·人工智能·后端·自动化
赵大仁5 小时前
官网性能优化实战:LCP 3.2s → 2.1s、CLS 0.107 → 0,以及被我推翻的 6 个判断
前端·性能优化·cls·lcp·core web vitals
xiancai_xianyu5 小时前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
小羊没烦恼!6 小时前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html
史瓦辛格6 小时前
给 DeepSeek Harness 写费用插件:把「这次会话花了多少钱」算准
前端·deepseek
星光不问赶路人6 小时前
Vue 3 + TypeScript 中 enum 的使用实践
前端·vue.js
鸥梨菌Honevid6 小时前
UVM 中 REQ 和 RSP 类型详解:从通信模型到 item_done 与 put_response
java·前端·servlet