[Pikachu靶场实战系列] XSS(跨站脚本漏洞)

本文详细介绍了XSS(跨站脚本)的四种类型:反射型、存储型、DOM型和盲打,以及如何利用和防范。通过实例展示了不同类型的XSS攻击方式,包括如何绕过过滤机制。同时,强调了输入过滤和输出转义在防止XSS漏洞中的重要性,并提醒开发者注意前端和后端的数据处理。
摘要由CSDN通过智能技术生成

XSS(跨站脚本)概述

   Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:

  • 1.反射性XSS;
  • 2.存储型XSS;
  • 3.DOM型XSS;

  XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位
   XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
   形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
   因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:

  • 输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
  • 输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

反射型xss(get)

题目如下:
在这里插入图片描述
尝试输入最简单的xss代码,作用是让浏览器弹窗,弹窗内容为xss

<script>alert(/xss/)</script>

发现只粘贴进了一部分,没有完全粘贴进去
在这里插入图片描述
打开查看器,发现在前端代码里输入框限制了输入长度,最大输入为20个字符
在这里插入图片描述
修改maxlength的值,重新输入xss代码,代码执行成功,同时注意到传入的值出现在url中,说明是通过get方式传值的,所以属于get反射型xss
在这里插入图片描述

反射性xss(post)

首先是个登录框,尝试xss无果后,用admin 123456登录进去,发现一个和之前一样的输入框。.
在这里插入图片描述

输入xss代码后抓包查看,发现传入的是post数据
在这里插入图片描述
和之前一样,直接插入xss语句即可,只是使用了post传递值的形式,在url中不可见

存储型xss

题目是一个留言板,存储型xss常见于留言板之类的地方,因为这些地方会将用户输入的数据存储在数据库,如果存在xss,除非删除数据库数据,否则无法清除
在这里插入图片描述
输入代码

<script>alert(/xss/)</script>

弹窗成功,然后每刷新一次,都会弹窗,这就是存储型xss的特征
在这里插入图片描述

DOM型xss

我们可以把DOM理解为一个一个访问HTML的标准的编程接口。DOM是一个前端的接口,并没有和后端做任何的交互。
在这里插入图片描述
输入代码为:

'><img src="#" onmouseover="alert('xss')">

输入后页面出现一个图片,鼠标移动到图片上,就会触发xss
在这里插入图片描述
在这里插入图片描述
原理我们要打开查看器来分析
这是输入之前的源码,我们随便输入一个123,找到123在代码中的位置
在这里插入图片描述
可以看到<a href =“123”>,如果将123换成我们之前输入的pyload,就变成了下面这样:

<a href ="'><img src="#" onmouseover="alert('xss')">"

首先闭合了a标签,然后又写入了一个img标签,接触图片就触发弹窗。

DOM型xss-x

pyload和上面的一样
在这里插入图片描述
点击后出现下图的超链接
在这里插入图片描述
点击超链接后出现图片
在这里插入图片描述
鼠标移动到图片上弹出窗口
在这里插入图片描述
原理也和之前差不多,都是闭合前面的标签,再构造一个新的标签

xss盲打

所谓盲打就是插入的内容,不会在前端显示,所以我们不能在前端看到相应的反馈,而是将payload插入到后台,如果后台没有对xss进行过滤,那么后台就会被插入,可以获得管理员的cookie等。
在这里插入图片描述

右上角的提示中告诉了我们后台登录地址
在这里插入图片描述
输入弱口令 admin 123456
在这里插入图片描述
进入后台,直接触发弹窗
在这里插入图片描述

xss之过滤

在这里插入图片描述
输入普通的代码,弹窗失败,是因为代码中有东西被过滤了
在这里插入图片描述
大小写绕过

<ScriPT>alert(/xss/)</ScriPT>

在这里插入图片描述

xss之htmlspecialchars

在这里插入图片描述
htmlspecialchars会对一些符号编码成HTML编码。从而防止xss注入。

题目使用的是默认类型,仅编码双引号,于是可以采用单引号闭合前面的标签,使用on事件来绕过,输入下面的pyload

'οnclick=‘alert(/xss/)’

出现超链接
在这里插入图片描述
点击超链接,弹窗
在这里插入图片描述

xss之href输出

这里牵扯到了js伪协议 参考文章:javascript伪协议

简单来说就是:
我们可以在浏览地址栏里输入"javascript:alert(‘JS!’);",点转到后会发现,实际上是把javascript:后面的代码当JavaScript来执行,并将结果值返回给当前页面。

题目如下:
在这里插入图片描述
使用js伪协议,构建payload

javascript:alert(1)

在这里插入图片描述
点击超链接,触发弹窗
在这里插入图片描述
打开查看器查看这部分代码,发现在href标签中,将alert(1)当做js代码执行了
在这里插入图片描述

xss之js输出

前面的’<script>是用来闭合掉前面的script标签的,后面在构造一个弹框
构造payload

'</script><script>alert(1)</script>

在这里插入图片描述
构造后的代码为,可以看到 '<script>和前面产生了闭合

<script>
    $ms=''</script><script>alert(1)</script>';
    if($ms.length != 0){
        if($ms == 'tmac'){
            $('#fromjs').text('tmac确实厉害,看那小眼神..')
        }else {
//            alert($ms);
            $('#fromjs').text('无论如何不要放弃心中所爱..')
        }

    }

本文部分内容参考文章 ,感觉师傅的分享: pikachu靶场练习通关加知识点总结

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值