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);""`)
相关推荐
辻戋1 小时前
从零实现React Scheduler调度器
前端·react.js·前端框架
徐同保1 小时前
使用yarn@4.6.0装包,项目是react+vite搭建的,项目无法启动,报错:
前端·react.js·前端框架
Qrun2 小时前
Windows11安装nvm管理node多版本
前端·vscode·react.js·ajax·npm·html5
中国lanwp2 小时前
全局 npm config 与多环境配置
前端·npm·node.js
JELEE.3 小时前
Django登录注册完整代码(图片、邮箱验证、加密)
前端·javascript·后端·python·django·bootstrap·jquery
TeleostNaCl5 小时前
解决 Chrome 无法访问网页但无痕模式下可以访问该网页 的问题
前端·网络·chrome·windows·经验分享
前端大卫6 小时前
为什么 React 中的 key 不能用索引?
前端
你的人类朋友6 小时前
【Node】手动归还主线程控制权:解决 Node.js 阻塞的一个思路
前端·后端·node.js
小李小李不讲道理8 小时前
「Ant Design 组件库探索」五:Tabs组件
前端·react.js·ant design
毕设十刻8 小时前
基于Vue的学分预警系统98k51(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js