xss-lab(1-5)关卡笔记

(一)XSS

XSS(跨站脚本攻击)是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,xss漏洞大多数是寻找参数未过滤的输出函数。

(二)xss-lab

xss-lab下载链接

在这里插入图片描述

(三)关卡笔记

第一关

首先通过测试,name赋予不同的值,在界面中将会回显对应的“欢迎用户某某某”
在这里插入图片描述
故尝试在标签处构造语句:

name=<script>alert(1)</script>

注入后,将会弹出消息框,提示成功信息
在这里插入图片描述
查看后台源码可知为GET型,只通过$_GET[“name”],获取name的值,并没有过滤直接echo输出

<?php 
ini_set("display_errors", 0);
$str = $_GET["name"];
echo "<h2 align=center>欢迎用户".$str."</h2>";
?>

第二关

按照前一题的思路,在输入框中时输入不同的值,将会提示“没有找到和某某某相关的结果”,此时将第一关的构造语句直接输入并不能成功
在这里插入图片描述
猜测并尝试构造闭合

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

注入后,弹出提示成功信息的消息框
在这里插入图片描述
查看后台源码

ini_set("display_errors", 0);
$str = $_GET["keyword"];
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level2.php method=GET>
<input name=keyword  value="'.$str.'">
<input type=submit name=submit value="搜索"/>
</form>
</center>';
?>

可知在h2标签处.htmlspecialchars($str)进行了防御措施

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

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

<input name=keyword  value="'.$str.'">

第三关

第三关与第二关看似相似,实则有挺大的不同,通过第二关的思路进行输入,将会发现“<”会被转换为html编码
在这里插入图片描述
尝试构造闭合标签的属性

' onclick='alert(1)

这个关卡和之后两三个关卡可能会出现注入成功,但没有回显,此时需要点击一下输入栏,若注入成功将会弹出回显弹窗
在这里插入图片描述
查看后台源码

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>"."<center>
<form action=level3.php method=GET>
<input name=keyword  value='".htmlspecialchars($str)."'>	
<input type=submit name=submit value=搜索 />
</form>
</center>";
?>

可知h2标签和input标签都被使用htmlspecialchars()函数进行了过滤

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

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

第四关

这关与上一关(第三关)真正的类似了,可以尝试闭合标签的属性进行测试
在这里插入图片描述
构造语句

" onclick="alert(1)

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

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level4.php method=GET>
<input name=keyword  value="'.$str3.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>

此处过滤了“<”,“>”,

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

但可以发现该关卡只对h2标签进行处理,input标签并未进行处理

第五关

尝试使用以下两种构造语句,script被替换成了scr_ipt,onerror被替换成o_nerror

“”><script>alert(1)</script>
"><img src=1 onerror=alert(1)

在这里插入图片描述
在这里插入图片描述
故猜测后台进行了关键字替换
采用其他标签构造语句

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

注:该构造语句好像也未能正常回显,需要点击输入框右侧的细小的下划线才能回显
在这里插入图片描述
查看后台源码

<?php 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level5.php method=GET>
<input name=keyword  value="'.$str3.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>

该关卡进行了大小写过滤和script、on关键字的过滤

$str = strtolower($_GET["keyword"]);
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);

第6-10关

xss-lab(6-10)关卡笔记

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值