XSS靶场过关

XSS靶场过关,第1张

第一关:
查看源代码:

发现进入下一关的条件是d出alter窗口
第一关的url

同时提示欢迎用户test
那么我们明白了name就是一个注入点

使用

语句,进入下一关

第二关:
也用语句试试
查看源代码发现<>被实体化了

但是下面value值的<>并没有被实体化
所以构造:
“>
“> 用来闭合input标签和”,让

第三题:
还是 先试试

发现<>都被实体化了
不过没关系,我们可以用οnclick=alert()语句

发现有单引号未闭合,那么加上:
’ οnclick=alert() ’ 可以 ‘οnclick=alert()’ 不行
这是为啥呢?这就要注意到html的语法了:使用标点符号时,要空一格。



再点下输入框,ok
第三关的问题,没打单引号时:

这句话的意思是将οnclick=alert()的值传给value,所以我们得让注入语句是独立的一句,需要闭合单引号。


第四关:
还是先

发现上头的<>被实体,下头的没滤没了
那就onclick吧:

不行,并发现有双引号,那么要使οnclick=alert()成为一个独立的语句,就得把两个双引号闭合掉。


加上"" ,ok了

第五关:
老规矩 看看过滤方法

上边转实体下边加了条杠,那么οnclick=alert()

待遇相同,都是关键字变形。



那么我们想到当输入字符出现在href语句中时,可以使用javascript:alert()语句
那么我们使用上述语句的同时,构造herf属性。



结合语法构造语句: “>2333<”
(注意herf语句构造的值要用"“标记起来) 这样传过去后,就构造出了
2333<”">

点进超链接,d窗,ok,下一关。


第六关:

转实体与关键字变形
试试大小写绕过:

">
可能是服务端没有进行正则式的匹配,所以没有被变形,闭合一下“

第七关:

大小写绕过script也被替换为空了。


οnclick=alert()的on也被替换为空,herf也一样

那么使用双写绕过: alert(1)把 script放在script里头

再闭合一下双引号
“>alert(1)<”

第八关:

语句在href里,且有关键字屏蔽,试试js语句,也不行,大小写也无法绕过

那么试试编码绕过。



将javascript:alert() 转成Unicode,扔框里就行了。



javascript:alert()

2333//

这样也是可以的,对javascript:alert()进行实体化:
javascript:alert()
关于编码的解释:
当写入:

1.首先浏览器接收到HTML代码,会先开始进行HTML解析,构造DOM树,粗略的讲就是识别 <> 这些标签,赋予其特殊含义,区别于纯文本内容。



注意此时并不会做任何解码 *** 作,所以构造 &#lt;img src=“javascript:al\u0065rt(1)”> 是不会d窗的,因为没有识别到标签,它相当于就是一个纯文本,具体来说就是:标签属性名和赋值符号不能编码,但是标签属性的值可以编码
2.DOM树构造完成,开始HTML解码,变成了click me
3.唉,碰到链接类属性 href 了,尽管发现了是javascript伪协议,浏览器也会直接 URL 解码一次,然后就变成了 click me
4.解码后,因为是 javascript 伪协议,所以 JS 解析器便开始工作了,解析成了 click me,注意在识别协议的时候,协议是不能被任何编码的,除非在识别之前已经被解码了,不然的话是不能被识别出来的的,比如说 href=“j%61vascript:alert(1)” ,冒号被编码也不行,浏览器虽说会 URL 解码,但是并不会解码之后再识别一次这是什么协议,于是不管是 http 协议还是 javascript 伪协议也好,此时都发挥不了作用而且,此时 href=“j%61vascript:alert(1)” 中的冒号括号也不能被 js 编码,否则不会d窗
5.然后就顺利d窗了
6.当然,并不是所有时候都是这种解码顺序,要依据具体情况而定。



一位大佬关于XSS编码问题的个人总结: https://www.cnblogs.com/wjrblogs/p/12497194.html

第九题:
直接注入:javascript:alert()

说我的链接不合法,那就么用个合法的试试。



还是提示不合法,是不是要http头呢?加上,https不行,还得http

把链接删掉,测试一下是不是检测http头的

还真是,那么把js语句添加进来。


javascript:alert(‘http://’)
这样也可以:javascript:alert()//http://
//注释了后面的http://使语句独立。


第十关:
查看源代码:

发现了三个参数, 标签用于搜集用户信息。



根据不同的 type 属性值,输入字段拥有很多种形式。


输入字段可以是文本字段、复选框、掩码后的文本控件、单选按钮、按钮等等。


现在三个参数都没有赋值,我们可以通过给他们赋值,赋值会在value中表示出来,那么就能在value中实现注入了。


那么试试在url中注入:keyword=t_link=1&t_history=2&t_sort=3
发现t_sort可以被赋值。



那就试试t_sort= type=“text”>

把尖括号给屏蔽了,那么用转义实体试试
t_link=1&t_history=2&t_sort=3"

上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存