作者:happy农村人9_624 | 来源:互联网 | 2023-08-29 09:41
文章目录前言一、XSS-labs下载与安装二、靶场攻略level1level2level3level4level5level6level7level8level9level10前言
文章目录 前言 一、XSS-labs下载与安装 二、靶场攻略 level 1 level 2 level 3 level 4 level 5 level 6 level 7 level 8 level 9 level 10
前言 在进行学习玩XSS的大部分基础知识后,以及初步完成一些简单的XSS测试后。接下里让我们开始对xss-labs进行攻略吧!! 不过需要注意的是,对于xss-labs我们只需大致了解一些思路即可,因为实战中,一般很少有这种弯弯绕绕的地方,不过可能在CTF中倒是会比较常见。
一、XSS-labs下载与安装 使用集成环境phpstudy。
xss-labs下载
下载后,直接解压到网站的根目录下就可以直接运行了!
二、靶场攻略 level 1 打开页面后,出现如下图,我们可以仔细观察到在url处有个参数name 以及 下面的payload长度4 刚刚好符合test的长度,因此,我们可以大致判断这里就可以进行xss的注入。
然后,我们在参数name下输入payload:
< script> alert ( 1 ) < / script>
完成&#xff01; 注意蛤&#xff0c;这里之所以不会弹出1 是因为xss-labs进行了检测&#xff0c;当我们能够正确注入时&#xff0c;xss-labs就会将弹出的内容进行替换&#xff01;
level 2 这里&#xff0c;我们按照上述思路直接输入xss代码的话&#xff0c;是无法进行执行的。然后&#xff0c;我们来查看以下页面的布局&#xff0c;看看是否有其他的思路可以进行绕过&#xff1a;
由箭头&#xff0c;我们可以看出对应的关系&#xff01;&#xff01;&#xff01; 这里&#xff0c;我们在输入框输入的xss语句虽然没被执行&#xff0c;但是其还是被带入到了value中的 。
因此&#xff0c;我们可以试想一下&#xff0c;这里既然已经嵌入在value&#61; “ … ” 之中了&#xff0c;那我们是否可以利用闭合以及onclick属性进行点击执行呢&#xff1f;让我们动手试试看&#xff1a;
"onclick&#61; &#39;alert(1)&#39; >
通过查看页面布局&#xff0c;我们发现这里确实是已经构造完成了&#xff01; 但是由于onclick属性的问题&#xff0c;我们需要在这里点击一下输入框&#xff0c;才能够触发这个漏洞&#xff1a;
完成&#xff0c;进入第三关&#xff01;
level 3
我们仔细看一下&#xff0c;图中数据填入的地方。我们可以发现有两个问题&#xff1a;1、我们输入的> <这两个符号都会被进行实体化&#xff1b;2、这里闭合回路的符号多出来了一个 "
然后&#xff0c;让我们在看一下第三关的源代码&#xff1a;
使用了htmlspeialchars 函数将特殊字符转化为html实体。
除此之外&#xff0c;发现这里确实利用了 ’ &#39;来进行闭合回路&#xff0c;且对于输入的字符中又进行拼接了" " 。所以说我们那边闭合时才会多出一些符号。 那么要如何进行绕过呢&#xff1f;
这里我们需要清楚一点的是&#xff0c;在源代码中value的范围应该是 ’ … ’ 这之间的 &#xff0c; 这里由于" " 将会和输入的字符串一起作为value值的一部分。我们想要构造起能够执行的onclick&#xff0c;就必须把value的值进行闭合了&#xff0c;因此这里我们可以先输入一个’ 来进行将value的值闭合。。。 但是由于后门还会有一个’未进行处理&#xff0c;因此我们可以直接把这个当作闭合onclick的值的符号即可&#xff0c;也就是我们只输入了onclick &#61; &#39;alert&#xff08;1&#xff09;
&#39;οnclick&#61;&#39; alert ( 1 )
成功&#xff01;为方便理解&#xff0c;我们在看一下输入后的页面源代码&#xff1a;
确实是闭合上了&#xff01;&#xff01; 至于这里连接的" 为什么不见了&#xff1f; 好吧我也不清楚&#xff0c;我猜测是html语言自己忽略了&#xff08;如果有知道的欢迎指出&#xff09; 反正呢&#xff0c;这里就是按着源码就可以直接用’ 进行将两边都闭合起来&#xff01;&#xff01;&#xff01;
level 4 第四关&#xff0c;利用替换函数直接就将<>换成空了&#xff1a; 然后&#xff0c;查看一下源代码&#xff1a;
emmm&#xff0c;和上一关一样的意思。。。将上一关payload里的’ 换成"即可&#xff1a;
"οnclick&#61;" alert ( 1 )
level 5
我们发现这里貌似将script进行了替换&#xff01; 为了方便理解&#xff0c;让我们直接看源代码吧&#xff1a; 这里&#xff0c;php源码中首先进行了将所有都转为小写的操作。然后&#xff0c;在将script进行替换的操作&#xff01;&#xff01;&#xff01; 因此&#xff0c;这里我们无法使用script这个标签了&#xff0c;但是我们可以使用其他的标签&#xff0c;比如超链接标签等&#xff0c;以下我们就来使用这个标签看看&#xff1a;
"> < a href&#61; &#39;Javascript:alert(1)&#39; >
输入完后,点击旁边那个蓝色的按钮就可以实现超链接跳转&#xff1a;
level 6 第六关&#xff0c;我们发现还是对scriipt进行了替换&#xff0c;但是当我们转化一下大小写发现好像并不会过滤&#xff0c;因此我们可以直接利用大小写以及闭合进行绕过&#xff1a;
"> < Script> alert ( 1 ) < / Script>
level 7 这一关&#xff0c;为了学习的方便&#xff0c;我们直接看看源代码&#xff1a;
我们发现这一关将很多关键词都进行了替换&#xff01;&#xff01;&#xff01; 看似毫无办法&#xff0c;但是这里却隐藏着一个逻辑上的bug。。这里由于&#xff0c;代码中的替换只执行了一次&#xff0c;未进行循环的的检测与替换&#xff0c;因此啊我们可以直接就利用双写进行绕过测试了&#xff1a;
"> < scrscriptipt> alert ( 1 ) < / scrscriptipt>
level 8 我们首先输入一串xss的脚本语句&#xff0c;然后发现呢&#xff01;我们输入的东西最后都拼接到下面友情链接处了&#xff0c;因此这里我们只需要写入Javascript:alert(1)&#xff0c;就可以利用超链接进行跳转&#xff01;
但是呢&#xff0c;由于代码中进行了替换&#xff0c;因此直接写入是不可取的&#xff01;
于是&#xff0c;这里我们采取Unicode编码看看&#xff1f;
&
然后&#xff0c;再点击刚刚那个链接按钮&#xff1a;
level 9 我们先看看源码&#xff1a;
因此&#xff0c;这一关需要加上http:// (说实话这玩意&#xff0c;实战怎么可能有&#xff1f;&#xff1f;&#xff1f; 不看代码这怎么想得出来&#xff1f;&#xff1f;&#xff1f;&#xff09;
&
然后此时就可以绕过了&#xff1a;
level 10 来到这一关啊&#xff0c;我们一打开&#xff0c;首先发现的是这里没有输入框了&#xff01;&#xff01;&#xff01; 既然如此&#xff0c;我们可以先看看页面的源代码布局&#xff0c;以此来看看是否有隐藏的变量在其中&#xff1f;
从图中可以看出&#xff0c;确实是有的&#xff01;&#xff01;&#xff01; 那我们看看是否可以利用这个参数作为xss的切入点呢&#xff1f;
keyword&#61; well done! & t_sort&#61; " type&#61;" text" οnclick&#61;" alert ( 1 ) "
okok&#xff0c;注入完成&#xff01;