进入靶场第一关,查看页面给我们反馈的信息内容

查看网页源码:

关卡源码:
<!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="level2.php?keyword=test";
}
</script>
<title>欢迎来到level1</title>
</head>
<body>
<h1 align=center>欢迎来到level1</h1>
<?php
ini_set("display_errors", 0);
$str = $_GET["name"];
echo "欢迎用户"
.$str."";
?>
<center><img src=level1.png></center>
<?php
echo "payload的长度:"
.strlen($str)."";
?>
</body>
</html>
观察发现没有任何的过滤:
直接插入js代码
payload:
name=<script>alert('XSS')</script>

使用我们之前插入js代码也就是使用上一关的js代码进行测试,看是否弹窗,发现没有弹窗

检测页面元素:
代码确实已经写入,但是没有被执行

查看页面源码:
发现<和>被HTML实体编码了,成了实体字符。但是我们发现获取到的属性值是没有经过转码的,我们要想办法在属性被获取到的时候绕过过滤函数。

我们构造语句,闭合input标签,再进行攻击。
payload:
keyword=">