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("没有找到和".htmlspecialchars($str)."相关的结果.".'
';

参数输入后,被传到h2和input标签中输出,在h2中被转义,无法执行代码;在input标签中将

构造payload


第六关

源码分析

构造payload


第七关

源码分析

构造payload