ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

XSS challenges解析及反思和对XSS漏洞的一点总结

2020-12-01 17:02:20  阅读:386  来源: 互联网

标签:XSS 标签 闭合 value challenges 漏洞 绕过 Stage


Stage #1(没有过滤的XSS)

随便在文本框输入一点内容,发现它会直接将输入的文本输出到网页上显示,查看网页元素,发现是b标签
1.png

两种思路:
1.闭合b标签,如图
2.png

2.它会直接将输入的字符串输出在网页上显示,可以考虑直接输入JS代码,如图
3.png

Stage #2(属性标签中的XSS)

还是随便输点东西上去,查看网页元素,发现文本在属性标签value里面
两种思路
1.闭合input标签
4.png
2.闭合value标签,利用on事件触发XSS
javascript on事件大全参考链接https://www.w3school.com.cn/jsref/jsref_events.asp
这里采用onmouseover事件,意思就是当鼠标指针移动到那上面的时候执行事件
5.png

Stage #3(选择列表中的XSS)

发现是一个b标签闭合的情况,采用Stage #1的两种方法都不行,所以可以输入的文本框不存在XSS,考虑旁边那个选择国家的列表,因为选择菜单里面无法自己更改,所以试试burp抓包
6.png
因为查看元素国家是b标签闭合,所以可以考虑直接将Japan改成一段JS代码
7.png
Fowward成功

Stage #4(参数中的XSS)

补充知识:
HTML表单隐藏参数:隐藏域是用来收集或发送信息的不可见元素,对于网页上的访问者来说,隐藏域是看不见的。当表单被提交时,隐藏域就会将信息用你设置时定义的名称和值发送到服务器上
和Stage #3一样先直接burp抓包,发现多了个参数叫hackme…
8.png
验证前面两个参数发现不存在XSS,考虑这个隐藏的参数,查看网页元素,发现hackme参数是value标签闭合
x.png

两种方法:
1.采用闭合input标签方法,成功
9.png
2.这种隐藏的可以使用svg来执行XSS,svg后面加事件(直接使用事件不行)
这里最合适的on事件是onload事件,即当加载的时候执行JS代码,这样能成功
10.png

Stage #5(限制长度的XSS)

一样先随便输入点东西,发现是value标签闭合,采用闭合input标签的方法,但是发现输入长度被限制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l0uZQ20d-1606812784419)(http://www.ghtwf01.cn/usr/uploads/2019/10/1650194901.png)]
将maxlength改大点就行

Stage #6(html事件中的XSS)

查看元素发现是value标签闭合,先采用闭合input标签,发现<和>被转义
12.png
再试试用on事件,成功

Stage #7(空格分隔属性中的XSS)

这道题发现是value闭合的情况,文本框里面输入的全部存放在value标签里面,先采用闭合input标签的方法
13.png
发现>是多余的,于是删除改为空格,发现<>都被转义
14.png
试一试on事件,使用代码1111" onm ouseover="document.domain"
15.png
简单修改,删掉1111后面的"alert(document.domain)被两对双引号包围,于是删掉一对,成功触发XSS
c.png

Stage #8(javascript伪协议触发XSS)

这道题利用javascript伪协议在a标签中的利用

16.png

Stage #9(利用utf-7编码)

这道题没啥用,现在都几乎删除了utf-7编码
直接给答案
17.png

Stage #10(绕过过滤domain为空的XSS)

查看元素发现是value闭合内容,试试闭合input标签,查看元素
!18.png
发现domain被吃掉了,这里有两种方法绕过
1.双写domain绕过
即domain写成dodomainmain
2.base64编码绕过
alert(document.domain)进行base64编码为YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ==
然后用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YdJmABZ9-1606812784433)(http://www.ghtwf01.cn/usr/uploads/2019/10/1016104977.png)]

Stage #11(绕过替换script和on事件的XSS)

发现是value闭合内容,先试试闭合input标签,script全被替换成了xscript导致JS代码无法执行
20.png
再试试on事件,发现所有on事件都被替换成了onxxx
21.png
考虑使用javascript伪协议,发现javascript被替换成了javaxscript
22.png
绕过方法:
1.在javascript中的script中插入不可见字符 (因为是替换script为xscript)
2.将javascript中的script中的任一字符进行unicode编码

Stage #12(利用IE浏览器绕过XSS过滤)

IE浏览器特性:两个`(反引号)能够闭合一个”(双引号)
这道题是value闭合输入的内容,先考虑使用闭合input标签,发现<>被过滤,前面的双引号也被过滤无法闭合
试一下用IE浏览器使用on事件
23.png

Stage #13(利用CSS特性绕过)

需在ie浏览器下,构造payload:background-color:#f00;background:url(“javascript:alert(document.domain);”);
但是我ie浏览器版本高了,所以不行,换用低版本ie浏览器就行

Stage #14(CSS绕过)

绕过对expression的过滤:使用注释绕过ex/**/pression
我IE版本高了,构造payload:expres/**/sion(if(!window.x){alert(document.domain);window.x=1;})

Stage #15(16进制绕过)
先随便输入字符串,发现上面是value标签闭合,尝试闭合input标签,文本框里面都被双引号包含,下面黑框里面JS代码中的<>都被转义
24.png
尝试用了unicode编码绕过发现还是不是,尝试使用16进制绕过,这里存在一个知识点,怎样使用JS代码能够识别的16进制
其实比较简单,网上有在线字符串转16进制,比如<的16进制是3c,前面加上\x就是,也就是\x3c是JS能够识别的,我们来试一试,在文本框里面输入\x3c发现小黑框出现x3c\不见了,再试试\\x3c,发现小黑框出现<
按照这种方法就可以使用16进制替换<>,还是使用闭合input标签
25.png
附上用cmd中python转换字符串为JS可识别的16进制方法

26.png

Stage #16(unicode绕过)

和15差不多,用到16进制绕过发现不行,尝试使用unicode绕过
附上用cmd中python转换字符串为JS可识别的unicode方法
27.png
还是和16一样的操作
28.png

标签:XSS,标签,闭合,value,challenges,漏洞,绕过,Stage
来源: https://blog.csdn.net/ghtwf01/article/details/110439787

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有