前言:
内容:
第八关
关卡资源网站,html编码网站(两个网站,一个是实体编号转义(只对特殊字符有效,字母无效)、实体符号转义)
在线Html实体编码解码-HTML Entity Encoding/Decoding //实体化符号编码
htmlb编码表
简单解释区别,
一种是方便记忆(实体符号编码,但是不能保证所有浏览器都支持)
另一种浏览器通用,记忆难度大(实体符号编码)
网站解析的解码的顺序:html解码、url解码、js解码
什么都被那个替换了,所有的字段都被替换了,相当于没用了,我看的用编码可以绕过
但是不知道为啥能这样,
问题思考:为啥<>被实体化编码了,还是能够正常解析弹窗语句,与平常的说的xss防御应该要实体化编码,两者的区别是什么?
解:忘求了,好像是对<a href="实体化编码">test</a>,对里面实体化编码,但是浏览器解析,会先解码,在解析
如果是对<>,这类实体化编码了,就想不到办法进行弹窗了。
构造payload:javascript:alert(1)
总结思路:
未对<>进行过滤了,但是使用了href字段,这个可以执行js语句,虽然对里面的大多数语句进行过滤,但是未对编码后的字段进行过滤,将javascript:alert(1)进行html编码,进行绕过
第九关
首先的思路肯定是把上一关的payload写进去,然后就看一下什么反应
链接不合法? 我本来就没有输入合法的内容,但是检测出我的payload还是什么
我继续检测,尝试看题目说的是什么,添加友情链接,难道要添加链接?
我先尝试写一个正常的链接,http://127.0.0.1,发现关键字必须要http://才行

然后构造payload:
javascript:alert(1)//http://
思考
为什么前面加上//,才能正确的弹窗,?
我的理解是在浏览器上,//是注释后面的内容,然后我去验证这个论点
javascriopt协议中,//是单行注释的符号,就是不执行后面的内容,什么是javascript协议,就是上面写的,javascript:alert(1),就是冒号后面的内容都是用js执行的,也就是 //为单行注释符的意思,为什么是js执行,因为前面说了用javascript语句执行
无javascript协议,普通的http://127.0.0.1,那就是普通的url协议,并不会是单行注释的
扩展思考
在html协议中,也是在浏览器中,有两种协议,一种是html协议,另一种是javascript协议
javascript协议是单行注释
html主题中,是没有任何含义的,直接渲染出来了
那么html主体中,靠什么注释,我查了,是这个方法,<!-- 注释内容 -->
总结思路
漏洞的前提条件:1、http://可以放到最后
2、在href字段内,导致里面的内容,是js代码执行的,然后js代码里面的//是注释的意思
3、没有注释//
4、没有检测html编码后的javascript:alert(1)
第10关
前言:我觉得用burp抓包更好理解,这个是有交互的,就是和web交互,而sql注入没有web交互,直接和数据库进行交互,所有的操作都是可以在burp抓包完成
但是xss如果在burp上完成,方便理解是服务器过滤了,还是web本身前端过滤了,但是前端过滤了,好像就进不了后端了,所以的话,一般都是后端过滤,
但是还是不理解为什么dom型不进入后端,也就是用burp抓不到包吧。
废话一大推
正题:
进入靶场页面,一个输入点都没有?????奇怪不是说好要有输入和输出吗,现在输入都没有了。我找一下
废了,我直接看源代码,看到有个hidden,然后我就直接删掉了,集出现一个框,输入就按enter键提交了,

然后就在前端元素里,就直接删掉,就好了,但是由于type的隐藏属性,就不会有框的,提交之后也不会有框的,
但是onclick,就需要点那个框,才会有弹窗的
构造payload:
"οnclick=alert(1) type="text
思考
为啥要显示才能弹窗?
由于,input标签本身就是用来输入的,所以他也就是要有输入框的,如果没有输入框,那就是相当于浏览器并不会执行input标签的语句,也就是并不会输出在前端,如果没有输出,那么漏洞本身也就不存在了,也就是说必须要前端页面显示了那个输入框,才会正常弹窗,如果是hidden属性,隐藏了那个框,就算xss攻击语句正确,也不能进行弹窗
所以,漏洞是否存在 ,取决于这个 input
元素是否能够引发一个交互事件。若该元素是隐藏的并且没有交互行为,XSS 攻击就无法触发。
成功的条件:
1、过滤了<>尖括号,但是没有过滤"双引号,依然可以用input里,onclick可执行js代码
3、为过滤on*语句
2、需要将标签的内容显示出来,用type="text显示出来,因为他可以拼接到浏览器的html代码里