XSS(跨站点脚本)是一种注入攻击。恶意脚本被注入到正常的网站中。 当攻击者使用Web应用程序将恶意代码(通常以浏览器脚本的形式)发送给其他最终用户时,就会发生XSS攻击。一般来说这种攻击发生的原因是没有对用户提交的输入进行过滤。
XSS一般分为反射型和存储型。下面我们会用具体的例子来说明:
0x01 存储型XSS
看一下靶场页面。我们的任务是通过下面的两个文本框做做弹窗——能弹窗就约等于能想干嘛干嘛了。
看一下网页源码,我们发现提交的内容会被一纯文本的形式放在网页上:
low难度
low难度的话,我们可以试一下往Message里写一个JS脚本。构造载荷:
成功!
由于每一次提交都是向网页中写东西,所以说每一次提交新的内容的时候都会弹窗。
假如每个用户打开这个页面的时候都会弹窗…
medium难度
仍然构造alert载荷,发现渗透失败。
系统把<script>
标签过滤掉了。
但是,经过实验之后我们发现,系统只是过滤了一遍…也就是说,我让他们过滤之后得到<script>
不就得了?
比如这样的:<scr<scri<script>pt>ipt>
构造载荷:
然后出现问题了:我这里的medium版本居然防住了!我试了一下官方给的例子居然也防住了!但是这个medium和反射型XSS的原理是一样的!
经过实验,high等级的也防住了…似乎是bug
阿巴阿巴阿巴阿巴阿巴
hard难度
查看源码之后发现他们似乎把所有的带有<script>
的字符串都给过滤了…
那就不用<script>
…
构造载荷:
0x02 反射型XSS
和存储型XSS类似,把前面的message框中的东西扔进去就可以了~