发现有个参数name,
level1.php?name=
发现给参数传什么,页面就会显示欢迎什么
审查test处源码
发现被
payload:name=
发现搜索框,跟上题类似,在输入框内输入,就会在上面显示与什么相关的结果。
同样的,进行元素审查
尝试和第一题一样的做法,闭合标签
payload:">
接下来解释一下为什么一开始的
和第二题的界面类似,
由于htmlspecialchars()函数,就无法闭合标签,也无法插入标签,这里我们可以利用不转化 单引号 的漏洞在原标签里添加一个属性,添加一个onfocus属性,可以触发onfocus事件
payload: ' onfocus=javascript:alert(/XSS/) '
这里可以看到,属性已经添加成功,那么接下来点击搜索框就可以触发onfocus了,从而达到弹窗的目的。
如果能看到源代码的话,其实比第三题还简单点,它过滤了大于号和小于号(<,>),很明显不能直接闭合标签了,其实无法看到源代码经过测试也马上就能发现,而且这次在input标签输出的时候是没有使用htmlspecialchars函数的。那么可以直接插入一个属性
payload: " onfocus="javascript:alert(/xss/) "
点击搜索框触发onfocus事件即可弹窗
尝试第四题一样的payload后发现对on进行了过滤
对script也一样
经过测试可以发现,在input标签处依旧没有使用htmlspecialchars()函数但是onfocus和script依旧用不了,那么这里使用引用超链接的方法
payload:">aaa
闭合input,再插入一个新的标签
然后点击aaa即可触发超链接里的弹窗
这道题与第五题类似,但是过滤了href,但是这个过滤可以用大小写来绕过。
payload:">aaa
前面几题的过滤无法绕过是因为使用了strtolower($_GET[“keyword”]);函数
而这道题没有
源代码里使用的str_replace()是区分大小写的。
这道题同样与第六题相似,不过绕过的方式变成了双写
payload:">aaa
第八题页面就与前几道题不一样,输入aaa,看一下源代码
看到这里就知道了,跟前面超链接的做法一样,而且这里标签还不要自己添加
但是他过滤掉了script,这里的绕过方法就是使用编码转换,HTML字符实体’a’=’a'在js里 s 就是转化为字符s,从而进行绕过
payload:javascript:alert(/xss/)
第九题和第八题的界面差不多,但可以看到,超链接位置不受我们控制
如果还是自己盲打,这道题就比较难受了。让我们来看一下源码是怎样的
从源码可以看出,过滤还是比较严的。
最重要的是在链接那里并不是完全不可控的,存在一个php的判断函数,判断提交的内容里是否有http://,如果有的话,就和第八题差不多。其实很简单,只要把http://放在注释里即可,因为它是判断我们提交的内容里有无http
payload:javascript:alert(/xss/) //http://
http;//被注释后不影响代码的运行。
刚出来,啥也没有,发现有一个keyword参数,对他进行传参,发现well done那有改变,查看源代码
发现还有三个参数被隐藏起来了,然后get传参,发现最后一个t_sort参数能够传进去
payload:t_sort=aaa" onfocus="javascript:alert(/xss/)" type="button"
还是使用onfocus,然后把type类型改为一个button,这样只要点击它就可以触发弹窗了