xss平台游戏挑战 level1-10

level-1

xss平台游戏挑战 level1-10_第1张图片发现有个参数name,
level1.php?name=
发现给参数传什么,页面就会显示欢迎什么
审查test处源码
xss平台游戏挑战 level1-10_第2张图片发现被

标签包裹
那么闭合标签,再加上弹窗语句即可

payload:name=

level-2

xss平台游戏挑战 level1-10_第3张图片发现搜索框,跟上题类似,在输入框内输入,就会在上面显示与什么相关的结果。
同样的,进行元素审查
xss平台游戏挑战 level1-10_第4张图片尝试和第一题一样的做法,闭合标签

发现无效
xss平台游戏挑战 level1-10_第5张图片发现直接输出了文本(待会解释为什么)
看一下其他地方的源码发现自己输入的东西会出现在这个地方
在这里插入图片描述也就是输入框这里,闭合标签并插入自己的弹窗语句即可

payload:">

接下来解释一下为什么一开始的

标签无法闭合,这里我们需要把它的源码下载下来去查看
xss平台游戏挑战 level1-10_第6张图片在源代码里可以看到使用了函数htmlspecialchars($str)
,函数的作用是把预定义的字符转换为 HTML 实体。就是把$str里输入的一些引号,大于号小于号等变成文本输出,避免干扰html语句,也防止xss的一种手段。但是htmlspecialchars()函数默认不转化单引号 ‘ 这就会造成很多漏洞,容易被绕过,这个漏洞接下来很多题都会用到。

level-3

xss平台游戏挑战 level1-10_第7张图片和第二题的界面类似,
xss平台游戏挑战 level1-10_第8张图片
由于htmlspecialchars()函数,就无法闭合标签,也无法插入标签,这里我们可以利用不转化 单引号 的漏洞在原标签里添加一个属性,添加一个onfocus属性,可以触发onfocus事件

payload: ' onfocus=javascript:alert(/XSS/) '

在这里插入图片描述这里可以看到,属性已经添加成功,那么接下来点击搜索框就可以触发onfocus了,从而达到弹窗的目的。

level-4

xss平台游戏挑战 level1-10_第9张图片如果能看到源代码的话,其实比第三题还简单点,它过滤了大于号和小于号(<,>),很明显不能直接闭合标签了,其实无法看到源代码经过测试也马上就能发现,而且这次在input标签输出的时候是没有使用htmlspecialchars函数的。那么可以直接插入一个属性

payload:  " onfocus="javascript:alert(/xss/) "

点击搜索框触发onfocus事件即可弹窗

level-5

尝试第四题一样的payload后发现对on进行了过滤
在这里插入图片描述对script也一样
经过测试可以发现,在input标签处依旧没有使用htmlspecialchars()函数但是onfocus和script依旧用不了,那么这里使用引用超链接的方法

payload:">aaa

闭合input,再插入一个新的标签
在这里插入图片描述
然后点击aaa即可触发超链接里的弹窗
xss平台游戏挑战 level1-10_第10张图片

level-6

这道题与第五题类似,但是过滤了href,但是这个过滤可以用大小写来绕过。

payload:">aaa

前面几题的过滤无法绕过是因为使用了strtolower($_GET[“keyword”]);函数
而这道题没有
源代码里使用的str_replace()是区分大小写的。

level-7

这道题同样与第六题相似,不过绕过的方式变成了双写

payload:">aaa

level-8

xss平台游戏挑战 level1-10_第11张图片
第八题页面就与前几道题不一样,输入aaa,看一下源代码
在这里插入图片描述看到这里就知道了,跟前面超链接的做法一样,而且这里标签还不要自己添加
但是他过滤掉了script,这里的绕过方法就是使用编码转换,HTML字符实体’a’=’a'在js里 s 就是转化为字符s,从而进行绕过

payload:javascript:alert(/xss/)

level-9

第九题和第八题的界面差不多,但可以看到,超链接位置不受我们控制
在这里插入图片描述如果还是自己盲打,这道题就比较难受了。让我们来看一下源码是怎样的
xss平台游戏挑战 level1-10_第12张图片从源码可以看出,过滤还是比较严的。
最重要的是在链接那里并不是完全不可控的,存在一个php的判断函数,判断提交的内容里是否有http://,如果有的话,就和第八题差不多。其实很简单,只要把http://放在注释里即可,因为它是判断我们提交的内容里有无http

payload:javascript:alert(/xss/) //http://

http;//被注释后不影响代码的运行。

level-10

xss平台游戏挑战 level1-10_第13张图片刚出来,啥也没有,发现有一个keyword参数,对他进行传参,发现well done那有改变,查看源代码
xss平台游戏挑战 level1-10_第14张图片发现还有三个参数被隐藏起来了,然后get传参,发现最后一个t_sort参数能够传进去

payload:t_sort=aaa" onfocus="javascript:alert(/xss/)" type="button"

还是使用onfocus,然后把type类型改为一个button,这样只要点击它就可以触发弹窗了

你可能感兴趣的:(xss平台游戏挑战 level1-10)