xss_labs练习
第一关
源码分析
$str = $_GET["name"];
echo "欢迎用户".$str."
"; //直接输出,无任何过滤措施
构造payload
第二关
源码分析
$str = $_GET["keyword"];
echo "没有找到和".htmlspecialchars($str)."相关的结果.
".'
- htmlspecialchars函数将预定义字符转换成实体
- 在处输入的参数$str没有丝毫的过滤,只要闭合掉value的双引号即可执行输入参数中的代码
构造payload
- " onmouseover="alert(2)
- onmouseover鼠标移动到指定的事件上会触发事件
第三关
源码分析
$str = $_GET["keyword"];
echo "没有找到和".htmlspecialchars($str)."相关的结果.
"."
";
参数输入后,被传到h2和input标签中输出,在h2中被转义,无法执行代码;在input标签中虽然被转义,但是htmlspecialchars()函数默认是不过滤单引号的,恰好value是用的单引号,可在input中闭合单引号来构造语句
构造payload
- ' onclick ='alert(3)
第四关
源码分析
$str = $_GET["keyword"];
$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);
echo "没有找到和".htmlspecialchars($str)."相关的结果.
".'
';
参数输入后,被传到h2和input标签中输出,在h2中被转义,无法执行代码;在input标签中将尖括号替换为空,我们可以使用不需要尖括号的代码来触发xss
构造payload
- " onmouseover="alert(4)
第五关
源码分析
$str = strtolower($_GET["keyword"]);
$str2=str_replace("