靶机地址:https://xss-quiz.int21h.jp/
设置独一无二字符串提交,在响应中查找。
onmouseover 属性在鼠标指针移动到元素上时触发。
注释:onmouseover 属性不适用以下元素:
例如: 其中111为用户输入,input标签、value属性
1)闭合属性,闭合标签,引入script脚本或者svg标签。例如:
2)闭合属性,引入事件,闭合标签。例如:
例如: 其中1111为用户输入
闭合文本标签,引入script脚本。例如:
隐藏域是用来收集或发送信息的不可见元素,对于网页的访问者来说,隐藏域是看不见的。当表单被提交时,隐藏域就会将信息用你设置时定义的名称和值发送到服务器上。
代码格式:包含在表单当中,且格式
使用burpsuite抓包可查看到表单提交上关于隐藏域的名称和值
HTML中svg介绍:svg意为可缩放矢量图形,svg使用XML格式定义图像。svg文件可通过以下标签嵌入HTML文档中:
闭合:
1)标签。闭合属性,闭合标签,引入svg标签
(在script被过滤或<>被转义时):
2)闭合属性,闭合标签,引入script脚本:
例如:
1)触发XSS,引入属性,输入:
111 οnclick=alert(document.domain);
javascript伪协议介绍:将javascript代码添加到客户端的方法时把它放置在伪协议说明符javascript:后的URL中。这个特殊的协议类型声明了URL的主体是任意的javascript代码,它
如果javascript:URL中的javascript代码含多个语句,必须使用分号将这些语句分隔开。
javascript URL还可以含有只执行操作,但不返回值的javascript语句。
a链接标签属性href介绍:
构造payload触发XSS:
绕过思考:
1、寻找过滤内容
输入 在页面元素中发现 ,过滤掉了domain
2、思考绕过策略:双写绕过和编码绕过
双写绕过:payload :
编码绕过:
payload:
其中是将base64加密后的数据转换为字符串
绕过思考:
1、寻找过滤内容
2、思考绕过策略:
伪协议绕过:payload:
空格绕过:payload:
基本XSS利用:HTML事件触发XSS、闭合input标签,利用外部标签触发XSS
当过滤时,可利用IE浏览器的特性,IE中两个反引号可以关闭左边一个双引号
payload: `` οnmοuseοver=alert(document.domain)
基本XSS利用:HTML事件触发XSS、闭合input标签,利用外部标签触发XSS
基本XSS利用无法生效时,可考虑此方法。
CSS特性讲解:
background:url(“javascript:alert(document.domain);”); 设置背景颜色
设置background:url,利用javascript伪协议执行js。目前IE浏览器支持,其他浏览器已不再支持。
payload:
CSS介绍:层叠样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准的通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态的修饰网页,还可以配合
各种脚本语言动态地对网页各元素进行格式化。
CSS中执行js:
css expression(css表达式)又称Dynamic properties(动态属性)是早期微软DHTML的产物,以其可以在CSS中定义表达式(公式)来达到建立元素间属性之间的联系等作用,从IE5开始得到
支持,后因标准、性能、安全性等问题,微软从IE8 Beta2标准模式开始,取消对css expression的支持
实际应用:
早期很多开发人员利用css expression实现了许多效果,比如将元素相对鼠标指针进行定位,根据一个定时器来移动元素等等。当然这些效果能够使用js来实现。
虽然css表达式问题很多,但是我们依然能够在网站上看到它的影子,甚至在一些成熟的商业网站上。最常见的一个应用就是悬浮在页面上的某个模块(比如导航、返回顶部)
注释绕过关键字过滤:
CSS中的注释
绕过对关键字expression的过滤:
payload触发XSS:
16进制介绍:十六进制转换有16进制每一位上可以是从小到大为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 16个大小不同的数,即逢16进1,其中用A、B、C、D、E、F(字母不区分大小写)这六个字母分别来表示10、11、12、13、14、15.
使用python将字符转换为16进制类型:
双斜杠+16进制绕过:
输出点<>被转义后构造的双斜杠+16进制绕过的payload:
unicode介绍:unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。unicode是为了解决传统的字符编码方案的局限而产生的。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
使用Python将字符转换为unicode类型:
输出点<>被转义后构造的双斜杠+unicode编码绕过的payload:
xsser是一款用于针对Web应用程序自动化挖掘、利用、报告xss漏洞的框架。