一、XSS(跨站脚本)概述

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

二、XSS(跨站脚本)利用

1.反射型xss(get)

反射型XSS(get)
输入   '  "  <>  特殊字符都可以原封不动的输出,可以发现没有任何过滤
审查元素修改下长度,输入payload:<script>alert(/xss/)</script>即可
查看后台代码,发现 后台代码并没有对你输入的东西 做任何修改 ,只是原封不动的输出了

2.反射型xss(post)

输入账号密码:admin/123456 登入

登入后直接输入payload:<script>alert(/xss/)</script> 触发弹窗

3.存储型xss

输入特殊字符:'"<> 发现没有过滤
 
 查看前端元素代码
直接输入payload:<script>alert(/xss/)</script> 触发弹窗
查看后台代码
判断message是否存在,并且 message不为空
进行了转义,防止sql注入
插数据库的时候,做了对应的转义,防止数据库的注入 ,把massage 插入到表中 存下来,存到后台;
将存储的留言 都显示出来,每次点击存储型xss时就会弹窗,所以是持久型xss

4.DOM型xss

HTML DOM树,可以理解为DOM为一个一个访问html的标准编程接口
输入测试代码'"<> 显示的内容和我们的输入的有所不同
getElementById获取标签id为text的值传递给str,str通过字符串拼接到a标签中。所以我们要闭合前面的<a>标签
输入payload1: '><img src="#" onmouseover="alert('xss')">
可以发现我们的输入变成了
当鼠标移动到图片位置就会触发弹窗
输入payload2:' onclick="alert('xss')">
可以发现我们的输入变成了
点击what do you see,便会触发弹窗

5.DOM型xss-x

查看网页源代码
通过拼接代码的功能是从text框取值并插入到标签<a href=''>,例如输入alert,点击链接会跳转到 http://xxxx/xss/alert中,
先闭合前面的<a>标签,再构造新的恶意标签拼接进代码
输入payload1: '><img src="#" onmouseover="alert('xss')">
可以发现我们的输入变成了
当鼠标移动到图片位置就会触发弹窗
攻击过程:输入payload-》点击’请说出你的伤心往事‘-》点击’有些费尽心机...‘-》鼠标移动到图片位置
输入payload2:' onclick="alert('xss')">
可以发现我们的输入变成了

6.xss之盲打

xss盲打是一种攻击场景。我们输出的payload不会在前端进行输出,当管理员查看时就会遭到xss攻击。
输入常规的payload:<script>alert(/xss/)</script>,点击提交后发现这里提示一段文字,应该是直接打到后台了,找到后台,登录进去看看
后台地址是/xssblind/admin_login.php登录即可触发xss

7.xss之过滤

输入 '<script>” 特殊字符,看输出结果字符被过滤,查看前端源码 输入与输出结果不一致
查看后端源码,发现对 <script 标签进行了过滤,替换为空格,但是只是对小写进行了替换
尝试大小写绕过
<SCRIPT>alert(/xss/)</sCRIpt>
当script为过滤关键词时,可以尝试其他的payload,如
<img src=x onmouseover="alert(/xss/)">
<img src=x onerror="alert(/xss/)">
点击图片的位置触发弹窗

8.xss之htmlspecialchars

htmlspecialchars()函数定义及用法
在php中,htmlspecialchars()函数是使用来把一些预定义的字符转换为HTML实体,返回转换后的新字符串,原字符串不变。如果 string 包含无效的编码,则返回一个空的字符串,除非设置了 ENT_IGNORE 或者 ENT_SUBSTITUTE 标志;
被转换的预定义的字符有:
&:转换为&amp;
":转换为&quot;
':转换为成为 '
<:转换为&lt;
>:转换为&gt;
输入特殊字符'   "   <   > ,查看前端源码,我们看到   "   <   >   都进行了html实体转码
但是没有对 ' 进行实体转码
可以使用单引号构造payload。
#' onclick='alert(/xss/)
可以看到我们的输入变成了
第一个单引号闭合href属性的双引号,第二个单引号闭合href属性的闭合双引号
点击语句即可触发弹窗

9.xss之href输出

输入测试代码#' onclick='alert(/xss/) ,查看前端源码,发现单引号没有用了
在a标签的href属性里面,可以使用javascript协议来执行js,可以尝试使用伪协议绕过。
javascript:alert(/xss/)  点击即可触发弹窗

10.xss之js输出

输入测试代码<script>alert(/xss/)</script> 查看源码
输入的代码被生成在js中并赋值给$ms。我们的输入被带入到js中,可以闭合
</script><script>alert(/xss/)</script>
';alert(1);//
成功弹窗

三、本文总结

到此为止,通过本篇文章,我们大家分别从XSS(跨站脚本)漏洞的原理、危害,XSS(跨站脚本)如何利用等方面,来和大家一起学习了XSS(跨站脚本)这项漏洞,相信大家已经对XSS(跨站脚本)这项漏洞有了明确而深刻的认识。

本人之后还会陆续分享我在web安全学习之路上的各种笔记,包括且不限于各种漏洞原理、实战漏洞挖掘、漏洞复现以及靶场和CTF的通关教程等等,希望大家多多支持。

Pikachu靶场通关之XSS(跨站脚本)的更多相关文章

  1. pikachu靶场-XSS

    .Tips: 一般查询接口容易出现反射型XSS,留言板容易出现存储型XSS 由于后台可能存在过滤措施,构造的script可能会被过滤掉,而无法生效,或者环境限制了执行(浏览器): 通过变化不同的scr ...

  2. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  3. xss跨站脚本测试

    测试的时候会涉及到xss测试,下面简要整理下xss的知识 xss跨站脚本特点就是能注入恶意的HTML/JS代码到用户浏览器,劫持用户会话 常用alert来验证网站存在漏洞 如果确认存在漏洞,会随着注入 ...

  4. XSS 跨站脚本攻击之ShellCode的调用

    1.ShellCode,最初是溢出程序和蠕虫病毒的核心,实际上是指利用一个漏洞是所执行的代码,在XSS跨站脚本中,是指由javascript等脚本编写的XSS利用代码: 2.Exploit,在黑客眼里 ...

  5. XSS 跨站脚本攻击之构造剖析(一)

    1.XSS-Filter:跨站脚本过滤器,用于分析用户提交的输入,并消除潜在的跨站脚本攻击 (1)XSS Filter实际上是一段精心编写的过滤函数作用是过滤XSS跨站脚本代码: (2)绕过XSS F ...

  6. XSS跨站脚本攻击实例讲解,新浪微博XSS漏洞过程分析

    2011年6月28日晚,新浪微博遭遇到XSS蠕虫攻击侵袭,在不到一个小时的时间,超过3万微博用户受到该XSS蠕虫的攻击.此事件给严重依赖社交网络的网友们敲响了警钟.在此之前,国内多家著名的SNS网站和 ...

  7. xss(跨站脚本攻击),crsf(跨站请求伪造),xssf

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  8. PHP漏洞全解(四)-xss跨站脚本攻击

    本文主要介绍针对PHP网站的xss跨站脚本攻击.跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息 的方式诱使管理员浏览,从而获得管理员权限,控制整个网站 ...

  9. JAVA覆写Request过滤XSS跨站脚本攻击

    注:本文非本人原著. demo的地址:链接:http://pan.baidu.com/s/1miEmHMo 密码:k5ca 如何过滤Xss跨站脚本攻击,我想,Xss跨站脚本攻击令人为之头疼.为什么呢. ...

随机推荐

  1. Nmap的多进程应用与研究

    Nmap的多进程应用 使用Nmap进行多目标多端口(强调端口数目较多,比如全端口)扫描时,其在执行时间上的表现并不好.本文旨在分析多目标多端口扫描时的速度瓶颈以及减少时间成本的解决方案. 实验 实验环 ...

  2. 随着日益增多的新技术,Android开发接下来的路该怎么走?

    很多小伙伴们经常问我android移动开发者的走向,一部分人都想多快好省,间歇性踌躇满志.持续性混吃等死 ,只想用CV的开发模式们快速完成工作,然后回家王者农药.其实这种现象很普遍,我想告诉你的是 , ...

  3. TCP拥塞控制详解

    1. 拥塞原因与代价 拥塞的代价 当分组的到达速率接近链路容量时,分组经历巨大的排队时延. 发送方必须执行重传以补偿因为缓存溢出而丢弃的分组. 发送方在遇到大时延时进行的不必要重传会引起路由器利用其链 ...

  4. Docker命令图

    attach #当前shell下 attach连接指定运行镜像 build #通过DockerFile 定制镜像 commit #提交当前容器为新的镜像 cp #从容器中拷贝指定文件或者目录到宿主机中 ...

  5. [C++]-unordered_map 映射

    unordered_map和map的区别请点击这里. 本文中的代码跟[C++]-map 映射中的代码仅仅是把定义的map类型数据定义成了unordered_map类型数据. 代码 #include&l ...

  6. 十六进制转十进制 BASIC-12

    十六进制转十进制 代码 import java.math.BigInteger; import java.util.Scanner; /* * 从键盘输入一个不超过8位的正的十六进制数字符串, * 将 ...

  7. Python 应用爬虫下载QQ音乐

    Python应用爬虫下载QQ音乐 目录: 1.简介怎样实现下载QQ音乐的过程: 2.代码 1.下载QQ音乐的过程 首先我们先来到QQ音乐的官网: https://y.qq.com/,在搜索栏上输入一首 ...

  8. Elasticsearch核心技术(二):Elasticsearch入门

    本文从基本概念.基本CRUD操作.倒排索引原理.分词等部分来初识Elasticsearch. 2.1 基本概念 Elasticsearch是面向文档(Document)的,文档是所有可搜索数据的最小单 ...

  9. STM32—驱动DHT11数字温湿度传感器

    文章目录 DHT11模块简介 DHT11数据传输 DHT11通信时序 代码实现 相关引脚初始化 复位模块 判断响应模块 读取数据包模块 DHT11模块简介 DHT11数字温湿度传感器,用来测量环境的温 ...

  10. COM笔记-关于HRESULT

    HRESULT HRESULT(Here's the RESULT)值分成32位值, HRESULT值中16到30这15个比特位包含的是设备代码.设备代码标识的是可以返回HRESULT返回代码的操作系 ...