XSS-labs 漏洞详解1-5

level1

先看源码
在这里插入图片描述
此处为GET型获取[name]值,并且不经过过滤直接echo输出

解决方法:直接在url上改为name=<script>alert(1)</script>
即可通过
在这里插入图片描述

level2

先输入后查看源代码看看过滤了那些东西
在这里插入图片描述发现此处过滤了<>
尝试构造闭合

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

成功

再看源代码
在这里插入图片描述
此处使用htmlspecialchars($str)进行了防御

注:htmlspecialchars()函数特殊字符转换为HTML实体,即:“ < ”,“ > ”,“ ” ”字符均会被过滤
但在input标签中,value未存在过滤措施,故可以利用此处进行测试

level3

先输入"><script>alert()</script>看看过滤了哪些内容
在这里插入图片描述
此处过滤了” <> 字符,此处尝试构造闭合标签属性

’ οnclick='alert(1)

然后没有回显,需要点击输入框,即可成功

查看源码:
在这里插入图片描述
可知h2标签和input标签都被使用htmlspecialchars()函数进行了过滤

<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>
<input name=keyword  value='".htmlspecialchars($str)."'>	

但我们可以发现htmlspecialchars()函数并没有过滤单引号,故此处可以使用单引号闭合

level4

老规矩,先输入"><script>alert()</script>看看过滤了哪些东西

在这里插入图片描述和第三题有些类似
那么再输入一个构造标签属性试一试

" οnclick="alert(1)

查看后台源码
在这里插入图片描述

$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);

此处过滤了“<>”, 但可以发现该关卡只对h2标签进行处理,input标签并未进行处理.

level5

老规矩,先输入"><script>alert()</script>看看过滤了哪些东西
还有" onclick="alert(1)
发现后台对关键字进行了替换,中间添加了下划线
解决方法:
采用其他标签构造语
注:该构造语句好像也未能正常回显,需要点击输入框右侧的细小的下划线才能回显

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

查看源码:
在这里插入图片描述
该关卡进行了大小写过滤和script、on关键字的过滤

$str = strtolower($_GET["keyword"]);
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值