- 前言
- 0x00
- 0x0https://blog.csdn.net/m0_46467017/article/details/1
- 0x02
- 0x03
- 0x04
- 0x05
- 0x06
- 0x07
- 0x08
- 0x09
- 0x0A
- 0x0B
- 0x0C
- 0x0D
- 0x0E
- 0x0F
- 0xhttps://blog.csdn.net/m0_46467017/article/details/10
- 0xhttps://blog.csdn.net/m0_46467017/article/details/1https://blog.csdn.net/m0_46467017/article/details/1
- 0xhttps://blog.csdn.net/m0_46467017/article/details/12
由于xss.haozi.me是一个在线靶场, 服务部署在 Github,若网速不好,则需要科学上网。由于本靶场是一个白盒测试的靶场,我们可以看到代码的源码,所以可以直接根据源码的限制的条件来思考如何绕过。
0x00通过源码我们发现本关没有任何限制所以直接输入
payload:
就可以过关了
进入第一关分析源码得知,将我们输入的数据包裹在
如果想具体了解
payload为:
分析源码可以得知,将输入数据的返回值放在input标签中的value值里,因为本关没有做任何过滤,所以这里有两种绕过方法。
第一种:闭合vlaue值直接写input事件
第二种:闭合input标签,重新写入恶意标签
payload如下:
方法https://blog.csdn.net/m0_46467017/article/details/1:aaa" οnclick="alert(https://blog.csdn.net/m0_46467017/article/details/1) 方法2:">
由于方法https://blog.csdn.net/m0_46467017/article/details/1为点击事件,需要点击文本框才能生效,所以本关推荐方法2。
进入第三关发现本关通过使用正则表达式来过滤了我们的(),将()替换为空
若对正则表达式不了解的可以查看这篇文章链接: 正则表达式常用语法解析
所以本关我们的思路就是尝试写不带括号的标签,或者通过编码的形式来绕过。
以下给出两种payload方法绕过
方法https://blog.csdn.net/m0_46467017/article/details/1:使用反引号代替括号 方法二:使用html实体编码对括号进行编码注:若要使用编码的方法绕过,需要注意html解析规范 例:将不会成功 因为
0x06
分析代码可以发现本关将输入数据放在input标签中,并将auto和on关键字>字符进行了一个替换添加。目的防止我们在input标签中使用事件弹窗,也不让使用>对input标签进行闭合。但因为html的特性,可以不同行执行命令,我们可以在auto、on关键字后换行,再书写=alert(https://blog.csdn.net/m0_46467017/article/details/1)函数。payload如下:
type="image" src=https://blog.csdn.net/m0_46467017/article/details/1 onerror =alert(https://blog.csdn.net/m0_46467017/article/details/1)0x07
分析代码发现本关将<>和尖括号中的字符全部过滤,防止我们书写新的标签造成恶意弹窗。这里就需要利用一个html的特性了,html在解析中有一种纠错机制,img标签不写后面的“>”仍然是可以正常执行的。
0x08
payload的为:
通过分析源码发现,本关将输入数据放入在一个标签防止我们进行闭合操作。本关的绕过思路是使用换行操作,因为他只识别某一行特定字符进行过滤,但html可以执行不同行的命令,所以使用换行操作进行闭合style标签绕过过滤。
payload为:
0x09
进入本关分析源码可以发现,如果不输入domainRe变量中的字符串则会直接返回语句Invalid URL,输入正确语句后放入script标签中。所以本关需要考虑如何把变量中的url闭合
将第一个script闭合后,由于有return的返回值">,所以还需要使用注释符注释就可以绕过了。
payload为:https://www.segmentfault.com"> ,标签语句可以正常生效,但是标签中的alert函数是js解析,所以导致不会弹窗,所以本关我们将alert函数进行编码就可以绕过了,payload如下:0x0C![]()
0x0D
进入本关发现在上一关的基础上过滤了script字符,所以我们直接使用上一关的payload就能直接绕过了。
进入本关发现使用正则表达式过滤<、/、"、'几个符号。又将我们输入的数据放在注释行中。所以本关想要绕过就只能使用换行符,使用换行符将我们要输入的alert(https://blog.csdn.net/m0_46467017/article/details/1)与注释符不在同一行,再将后面的注释符进行注释,就能成功绕过了。
payload如下:
aaaa alert(https://blog.csdn.net/m0_46467017/article/details/1) -->0x0E
进入本关发现将所有用<开头的字母都进行了替换,让我们无法正常输入标签。这里需要使用一个xss特殊的绕过技巧,在html中ſ这个字符转换为s,所以我们通过使用这个字符绕过这里的过滤函数。
payload如下:
<ſvg/onload='ahttps://blog.csdn.net/m0_46467017/article/details/108;https://blog.csdn.net/m0_46467017/article/details/10https://blog.csdn.net/m0_46467017/article/details/1;https://blog.csdn.net/m0_46467017/article/details/1https://blog.csdn.net/m0_46467017/article/details/14;https://blog.csdn.net/m0_46467017/article/details/1https://blog.csdn.net/m0_46467017/article/details/16;(https://blog.csdn.net/m0_46467017/article/details/1)'>0x0F
我们发现本关将特殊字符转换为html实体编码放入img标签中的onerror事件中。但是在onerror事件中html实体编码是可以正常转换调用的,所以我们可以直接输入')将前面闭合再输入,或;或换行将alert(https://blog.csdn.net/m0_46467017/article/details/1)分隔开来,就可以正常执行了。
payload如下:
aaaa');alert(https://blog.csdn.net/m0_46467017/article/details/1)//0xhttps://blog.csdn.net/m0_46467017/article/details/10
进入本关发现,将输入的数据直接放入在一个window.data中而这个就相当于windows中弹窗调用,所以直接输入alert(https://blog.csdn.net/m0_46467017/article/details/1)就可以成功弹窗了
0xhttps://blog.csdn.net/m0_46467017/article/details/1https://blog.csdn.net/m0_46467017/article/details/1
payload为:
alert(https://blog.csdn.net/m0_46467017/article/details/1)
进入本关发现在过滤了许多字符的基础上还将,n、r等换行操作给过滤了。所以我们可以先把前面函数闭合,虽然不能使用换行操作,但是我们可以使用,或者;将代码分隔开来,再把后面字符使用注释符注释就可以成功绕过了。
payload如下:
0xhttps://blog.csdn.net/m0_46467017/article/details/12
"),alert(https://blog.csdn.net/m0_46467017/article/details/1)//
本关本质其实和上一关一样,就是将"替换为,防止闭合前面函数。
但是我们可以通过先输入符号将进行转义了,这样双引号就能成功闭合了。payload为:
"),alert(https://blog.csdn.net/m0_46467017/article/details/1)//
总结:本靶场主要是白盒测试,多用于拓展xss绕过思路和技巧。


