前言:
直接就是干,就完了
正文:
目录
思考1:为啥我用网络上自带的html在线运行网站,不能弹窗?
前期思路,自己想
这一关比上一关更加懵逼,就是说没有任何参数,包括上一关还有个ng-include提示,
现在这一关都没有提示了,
废话不多说,我这关的思路如下,
我猜解这个有payload的字段,有写payload为多少字数时,就应该想到了这关有隐藏参数,随机我就采用了参数爆破,但是我之前是level16.php?aa=111
这个111只有三个数,那个显示payload长度为3,不是和原始的payload的长度为0,
他的响应包大小不是没有发生改变,随即我就将payload设置为<script>alert(1)</script>
这样一来,payload的长度就有23,和原来的0,他的响应长度就发生改变了
和最高爆破数量为3,开爆
不出意外的话,要出意外了,意外没有爆出来
我还想着,使用匹配的方式,payload的长度:0,就是将这个排除掉,但是没有那个使用长一点的payload的方便,而且的话
匹配方式的话还是有问题的,不能有中文,会乱码,根据网上了解,,反正就是要将那个
中文的格式转换为/x94,这种格式,我也不知道,在网上找的话,好像要采用python来转换,太麻烦,不想搞,其他方式的话,又没找到,又想用正则表达式进行匹配,反正就是什么都想搞,什么都没有搞成
匹配了这么久,还是没有匹配上,已经初见端倪了
ok,不必多说,算了看源代码,
发现他的参数值长度为7位,这爆多久才能爆出来啊,废了 ,
我的想法是,这关的目的应该是要我们弄个那个参数字典,然后字典的话,应该是要带有这个keyword这个参数的,
中期思路(看源码)
只能看一下这个的闯关源代码了,发现有个参数keyboard,在靶场地址后面构建这个参数,发现没有任何反应
离谱,看错参数了,ok,
震惊我好久了,原来chatgpt也不会,首先我没有开启网页搜索,是他自己从知识库里面分析的,
给我的xss的payload不可用,然后就是说
我自己从
靶场分析的结果
1、不能使用空格,空格被编码了(啊,第一次知道空格被编码还会影响xss的执行)
2、不能使用script等危险标签,script被编码了(但是尖括号没有被编码)
3、/被编码了(导致我不能使用那个<svg/>的那个了,那个不带有空格)
在网上找了还是没有找到对应的结果
后期思路(看答案)
也就是说,这个答案的话,就是绕过空格的一个方法
也就是用空格,换行符来代替空格,但是浏览器解析的时候,会将%0A当做换行符来处理,也就是说,没有过滤掉换行符,导致了绕过
payload实现,首先用没有过滤掉的<svg>
构造payload:
<svg%0Aonload=alert(1)>
思考1:为啥我用网络上自带的html在线运行网站,不能弹窗?
在在线html代码运行HTML/CSS/Javascript在线代码运行工具 | 菜鸟教程,运行这段代码<svg%0Aonload=alert(1)>,不能够弹窗?
首先理解一下,%0A是换行符的意思
问了chatgpt,大概就是说直接在哪里输的话,会被当做文本形式处理,他不会将url解码,就是说少了url解码这一步,
然后它让我就是,直接输入\n的话,应该就会解析,我试试,好像不行,
在特定环境下能解析,例如
在js代码和python字符串执行环境中,\n可以就是当成换行符
html和url环境中,\n不能当做换行符,(url中,需要换成%0A)
总结思路
使用字典,先爆出来这个隐藏的参数值,然后的话就是去构造xss参数,然后去寻找除script标签的其他标签,然后就是绕过空格的方法
实战知识点
1、拥有参数字典,枚举隐藏参数
2、知道常见过滤,如\,空格的绕过方法(在一般没有过滤尖括号的情况下)