XSS跨站脚本攻击专题

    跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

    它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制,获取用户的一些信息。

    XSS的分类:

    反射型XSS

    存储型XSS

    基于DOM的XSS

XSS一般分为3类:

1.反射型XSS,相对来说,危害较低,需要用户点击特定的链接才能触发。

2.存储型XSS,该类XSS会把攻击代码保存到数据库,所以也叫持久型XSS,因为它存在的时间是比较长的。

3.DOM 型XSS,这类XSS主要通过修改页面的DOM节点形成XSS,称为DOM Based XSS。


最简单的测试语句:

<script>alert("hello");</script>

语句执行后,浏览网页源码,发现这个语句已写入网页中了

可以输入其他的JS代码,来让浏览器做其他的事,比如弹出用户cookie,在输入框中输入<script>alert(document.cookie)</script>,其中document.cookie可以用来获取用户的cookie。

HTTP是无状态协议,它依靠cookie来识别用户身份,如果我们通过JS来获取了用户的cookie后,我们就可以冒充他人的身份,比如:如果某银行网站存在XSS,你通过XSS获取了别人的cookie后,你可以把cookie替换成别人的cookie来冒充其他人,然后你就可以自由转账了。注:事实上,银行的网站一般都设置了HttpOnly,JS脚本无法读取到cookie信息,而且银行转账一般需要短信验证码,特别是大额转账,所以即使你找到XSS,想要利用也很难。


参考合天实验室的XSS进阶一

实例一:尝试构造语句使浏览器执行弹出对话框的脚本。

实例二:小写不行,就大写吧

      因为会对<script></script>进行过滤,如关键代码:

     

      尝试构造语句,改变script大小写,使浏览器执行弹出对话框的脚本。

实例三:大写小写都不行,看你怎么办?

     对script大小写都进行过滤, 如关键代码,/i表示不区分大小写:

     

      尝试构造语句,用其他html标签,<img src=123 οnerrοr=alert('xss')>,使浏览器执行弹出对话框的脚本。


参考合天实验室的实验:XSS进阶二

如果后台脚本,通过正则表达式限制了alert怎么办?如下:

尝试用confirm()函数,如下结果:

用prompt()函数也可以

js要参考:https://www.w3school.com.cn/js/index.asp

PHP 语法:https://www.w3school.com.cn/php/php_syntax.asp

另一个例子:页面中写入如下代码

则把用户输入存入有个变量

思路:使各种引号闭合后,加入js语句,如下:

查看源码如下:


页面代码

这是要对一些符号进行html编码:如<,&lt,如下:

思路:还是用单引号闭合,再插入xss语句:如下


关键代码:

页面形式:

源码:

思路:使路径双引号闭合,传入XSS代码

构造如下URL,并浏览

观察源码:

输入任何内容提交:成功!!!!


页面代码:显示一个锚点的值

源码:

#号后面,直接构造:<img src=1 οnerrοr=alert(1)>

也可以试试onload(),进行跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值