xss-lab第五关
·

script应该被过滤了
测试后发现on也被过滤
我们用url伪协议
"><a href=javascript:alert(1)>点击</a><"

点击即可
源码分析
一、整段代码解析
ini_set("display_errors", 0);
-
禁止错误信息显示。
$str = strtolower($_GET["keyword"]);
-
获取 URL 参数
keyword,并统一转成小写(防止用大写绕过过滤)。
$str2 = str_replace("<script", "<scr_ipt", $str);
-
把小写
<script替换成<scr_ipt,试图阻止最常见的<script>标签注入。
$str3 = str_replace("on", "o_n", $str2);
-
把所有
on(如onerror,onfocus,onclick)替换成o_n,试图阻止事件属性注入。
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>" . '<center> <form action=level5.php method=GET> <input name=keyword value="'.$str3.'"> <input type=submit name=submit value=搜索 /> </form> </center>';
-
<h2>是安全的,用了htmlspecialchars()。 -
关键是
<input value="...">部分输出了你处理后的输入,没有转义引号 -
你仍然可以通过 HTML 属性注入的方式触发 XSS
二、他们的防护做了什么?
| 过滤点 | 说明 |
|---|---|
<script → <scr_ipt | 禁止 script 标签 |
on → o_n | 禁止事件属性(onxxx) |
strtolower() | 防止大小写绕过 |
| 没转义引号 | 依然危险! |
更多推荐
所有评论(0)