XSS跨站脚本攻击简介

首先介绍一下JavaScript中的同源策略:
JavaScript中将 协议,域名,端口,三者完全相同的网页视为同源。

在HTML语音中,有部分标签在引用第三方资源时,不受同源限制
<script>
<img>
<iframe>
<Link>
除此之外还有好多
上述这种带SRC属性的标签,在加载时,实际上是生成一条get请求,向指定服务器申请资源

确定脚本的源,取决于加载脚本的位置,而非脚本存在的位置

XSS漏洞原理:
恶意攻击者往Web页面里插入恶意Script代码,当用户浏览页面时,嵌入其中的Script代码会被执行,从而达到恶意攻击用户的目的
XSS漏洞是发生在 目标网站中目标用户的浏览器层面上,当用户浏览器渲染整个HTML文档的过程中,出现了不被预期的脚本指令被执行,XSS就会发生

常见的XSS漏洞分为3类,
一、反射型XSS
二、存储型XSS
三、DOM型XSS
简而言之就是将我们输入的变量A 赋值给变量B,然后将变量B插入到html其他标签中

四、常见的XSS过滤
1.htmlspecialchars()函数 
能将单引号'',双引号"",斜杠/,反斜杠\  转义,也就是在这些符号前加上退意符\。
但该函数默认编码双引号,正反斜杠(/,\)
如果想要编码单引号,则需要加上一个参数
  
2.strip_tags函数
将尖括号编码

3.addslashes
将单双引号转移   就是在 '前加个\

4.addslashes()函数
将预定义字符 '   "    \  NULL
函数会在这四个字符前加上 \

5.我在渗透测试过程中见到的基本上都是将关键符号如 <>"" '' ()等等
这些符号进行实体编码
或者直接将这些符号过滤掉
再或者将关键字alert script  src img等等过滤掉
有些时候会通过前端JS校验,限制输入字符串长度,是你无法构建完整的XSS语句
不过你在页面中查看元素,找到对应代码,修改其中的限制即可
或者先输入一个合法的字符串,接着使用brupsuit抓包更改

查看元素与查看源码的区别
查看元素时,页面的代码是被渲染过的(规范书写后的)
不管程序员在书写属性的时候用的是单引号还是双引号,页面渲染后统一使用双引号
对于编码后的值,如果你不点编辑查看的话,它都是未编码的值

五、一些常见的XSS语句

<img/src=1 οnerrοr=alert`1`>
<img src=1 οnerrοr=alert`1`>
<script>alert`1`</script>
<script>alert(\1\)</script>
javascript:alert(1)

οnmοuseοver=alert(1)  //           (//的目的是注释掉后面的引号,记得在输入//前空格)
该事件的意思是当鼠标划过这里时,会出现弹窗。
需要注意的是 //是javascript里的注释符,html的注释符是<!-- -->(按道理来说//在html标签里是用不了的)
但onmouseover是javascript事件,它后面就是javascript环境,所以//可以解析

如果输出点在引号内
并且引号被编码或者过滤了
例子:
<script> 
 var aaa="xxxx";
</script>
我们可以使用如下方法
<script>
var aaa="xxxx</script><script>alert(1) //"
</script>


在JavaScript中 -号表示连接符
当遇到  value='' 输出在script标签之间
'-alert(1)-'
即:value=''-alert(1)-''






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值