仅限学习参考,欢迎补充指正
目录
打靶场之前先整理下一些可执行绕过姿势
大小写绕过(转换大小写字符)
注意:1、js中严格区分大小写
2、在html标签中不区分大小写
实体编码转换绕过
双写绕过
伪协议绕过 (JavaScript 后面可以执行很多js代码,但每个语句要用;隔开)
事件绕过(onlick、onmouseout)
还可利用单双引号、制表符
1、 <script> alter() </script> //警告消息框 有一个确定键 (用的比较多)
<script> confirm() </script> //确认消息框 有一个确定键和一个取消键
<script> prompt() </script> //提示消息框 有一个text输入框
2、 <img onerror=javascript:alert(/xss/);>
3、 <a href="javascript:alert(/xss/)"></a> 伪协议
4、 可内嵌在标签属性里的 onclick 或 onmouseout eg: button标签、iframe标签等
5、 <iframe src="javascript:alert(/xx/)">
做之前需要找到交互点,要学会利用开发者工具以及源代码。
在后面比较难的关卡中,还需要用到BurpSuitePro,或者是在火狐安装HackBar插件。
第一关
页面没有任何可以点击或输入的地方,很明显唯一可输入的只有URL中了。尝试输入后,发现name值可修改,可考虑在此进行绕过。
在name后试着输入代码口令,成功过关
<script>alert(/xxs/)</script>
第二关
打开页面发现有两个输入点,试着在页面输入框中输入,发现可输出,考虑在此绕过
打开开发者工具(若查询不到错误,打开源代码分析)
有两种解决方法:
方法一:
想让它利用标签执行弹窗,首先需要把input标签闭合,继而可继续执行命令
"> <script>alert(/xxs/)</script>
方法二:
可利用鼠标移出事件(onmouseout)在input内部进行绕过
" onmouseout="alert(/xxx/)
方法三:
利用iframe,发现新开了一个页面并出现了弹窗,但并没有出现通关提示并跳转下一关,这是由于通关提示是写在当前页面的,在另一个页面实现弹窗绕过,也是通关的一个体现,手动跳关就可以了。
"> <iframe src="javascript:alert(/xx/)">
第三关
还是重复之前的操作,先找到输入点随便输入,查看是否可以输出。发现可输出,就可以在这继续执行绕过操作了。
" onmouseout="alert(/xxx/)
输入后并没有出现弹窗,打开开发者工具,会发现鼠标指向输入框后,输入框变蓝,是因为把值都赋给了values,这时打开源代码查找问题
发现双引号被实体编码了,并且变成了单引号。可以试试把双引号变为单引号是否可以。
' onmouseout='alert(/xxx/)