前言

XSS 的原理是 WEB 应用程序混淆了用户提交的数据和 JS 脚本的代码边界,导致浏览器把用户的输入当成了 JS 代码来执行。XSS 的攻击对象是浏览器一端的普通用户。

XSS 又叫 CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往 Web 页面里插入恶意 html 代码,当用户浏览该页之时,嵌入其中 Web 里面的 html 代码会被执行,从而达到恶意用户的特殊目的。它与 SQL 注入攻击类似,SQL 注入攻击中以 SQL 语句作为用户输入,从而达到查询 / 修改 / 删除数据的目的,而在 xss 攻击中,通过插入恶意脚本,实现对用户游览器的控制,获取用户的一些信息。


一、XSS详解

XSS分为:存储型 、反射型 、DOM型XSS

存储型

存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie

反射型

非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。反射型XSS大多数是用来盗取用户的Cookie信息。

DOM型

不经过后端,DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS是通过url传入参数去控制触发的,其实也属于反射型XSS。

二、xss-labs通关

第1关:
通过get传参然后显示在页面,可以判断是反射型xss,而且没有做任何过滤,可直接在url中最后面加入代码

<script>alert(1)</script>

在这里插入图片描述

第2关:
正常输入是不行的,因为源码中加了个引号
在这里插入图片描述
既然使用引号,我们就可以加个引号。让他闭合即可

"><script>alert(1)</script>

在这里插入图片描述

第3关:
这里要了解一下HTML中的onclick 事件
参考连接:https://www.runoob.com/jsref/event-onclick.html
看页面源码发现又是引号
在这里插入图片描述
按照第一关的闭合试试,发现还是不行,代码仍然在引号里面
在这里插入图片描述
看源码是单引号闭合的,但是这里看到尖括号被实例化

在这里插入图片描述
用onclick鼠标点击事件
在这里插入图片描述

第4关:
分析源码,尖括号被做了替换
在这里插入图片描述
跟上一关一样,利用onclick事件,闭合换成了单引号
在这里插入图片描述

第5关:
分析源码,仍是做了替换,on也被替换成了,且全部转为小写
在这里插入图片描述
这里就要用到另一标签了

"> <a href=javascript:alert('xss')>xss</a>//

看到代码被嵌入到了html源码中
在这里插入图片描述
点击页面上的xss即可
在这里插入图片描述

第6关:
分析源码,闭合为双引号,全都做了替换,但是发现没有限制大小写
在这里插入图片描述
大小写绕过,s换成S,前面的h2闭合,两种都可以

"/h2> <Script>alert('xss')</Script>
"> <a Href=javascript:alert('xss')>xss</a>//

在这里插入图片描述

第7关:
双写绕过

" oonnfocus=javascscriptript:alert('xss')//
"><scscriptript>alert("xss")</scscriptript>//
"> <a hhrefref=javascscriptript:alert('xss')>xss</a>//

在这里插入图片描述

第8关:
分析源码,前面的都用不了
在这里插入图片描述
这关需要进行编码转换,将 javascript:alert(‘xss’) 转化为实体字符

在这里插入图片描述

第9关:
继续使用上关的编码,发现不可以
在这里插入图片描述
查看源码,源码里检测是否含有http://那就在里面加个http://
在这里插入图片描述

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#120;&#115;&#115;&#39;&#41;//http://
前面的编码后就成了
<a href="javascript:alert('xss')//http://">友情链接</a>

在这里插入图片描述

第10关:
这里要连接一下HTML中hidden影藏属性,看源码可以找到表单中有三个影藏属性
在这里插入图片描述
将其中一个type的值改为text,后面加上onclick即可

在这里插入图片描述
在这里插入图片描述

第11关:
referer检查,这里需要用bp修改一下数据包,伪造一个referer再发送出去
在这里插入图片描述
之后就可以看到一个文本框
在这里插入图片描述

第12关:

第13关:

第14关:

第15关:

第16关:

第17关:

第18关:

第19关:

第20关:

总结

1-9关都是一些绕过方法,感觉有点像sql注入,绕过的方法有大小写转换,字符编码,双写,HTML特殊表单,onclick, <a href=” “//,


版权声明:本文为qq_47289634原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_47289634/article/details/128646477