[深入学习Web安全](11)之XSS玩法

本文转自:i春秋社区

前言
这篇paper,我们将学习如何优雅的调戏XSS。我们会教大家一些不常用的,但很实用的XSS姿势。我们在正式进入主题之前,先来说一下,该篇paper将涉及的内容:

正文
如何调用XSS Shellcode?
我们先来学习一下,如何去调用我们的XSS Shellcode,嘿嘿。我们来看这种方式:

[XHTML] 纯文本查看 复制代码
1
<script>[你的Shellcode]</script>

我们是通过script标签来执行JS,也就是我们的Shellcode,我们再来看下一种:

[XHTML] 纯文本查看 复制代码
1
<script src=[你的Shellcode的URL]></script>

这里,我们是使用script标签的src属性从远程调用了我们的JS文件,来实现调用Shellcode。我们除了使用script标签来调用我们的Shellcode,还可以使用JS代码将我们的script标签注入到DOM内实现执行我们的Shellcode:

[XHTML] 纯文本查看 复制代码
1
2
3
var s = document.createElement("script");
s.src = "[你的Shellcode的URL]";
document.body.appendChild(s);

这样就能将远程的js代码注入到我们的DOM,我们来讲一下,这段代码的含义:
1.首先,我们通过var定义了一个变量s,用来接收document.createElement("script")的返回值,这个返回值是一个对象,于是s就变成了一个变量。
2.我们的createElement方法,是用来创建一个元素的,这个方法在XSS的攻击中十分常用,它的参数就是字符型的要创建的元素的标签名。
3.我们接着给s对象的src属性,赋值为我们的Shellcode的URL,使用createElement方法创建的元素对象具有该元素标签的所有属性,直接赋值就可以了。
4.接下来,我们向docuement的body中插入了该对象,使用了appendChild方法。
这就是我们这段代码的作用与原理,十分简单,大家自行体会一下。我们接着看下一种方法,这种方法是记录在《XSS跨站脚本攻击剖析与防御》一书中的。但是,我个人不认为这个方法很好用,但是,我们还是来提一下。
这个方法利用了document.location.hash,我们来看一下,如何去利用的,我们创建如下demo文件:

<ignore_js_op>

我们在浏览器上访问该文件,如下:

<ignore_js_op>

我们可以看到alert的内容是空的,接着,我们在整个URL后面添加"#www.ichunqiu.com",如图:

<ignore_js_op>

我们注意到,document.location.hash取到的就是URL中#号,及#号以后的内容。
接着,我们再来讲一个substr方法,我们创建如下demo文件:

<ignore_js_op> 

....................................................文件较长就分享到这里,想查看全文请点击下面,

 

 

[深入学习Web安全](11)之XSS玩法的更多相关文章

  1. Prometheus学习笔记(7)PromQL玩法入门

    目录 1.什么是PromQL??? 2.如何查询??? 1.什么是PromQL??? PromQL是Prometheus内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持. ...

  2. SpringBoot学习笔记(11):使用WebSocket构建交互式Web应用程序

    SpringBoot学习笔记(11):使用WebSocket构建交互式Web应用程序 快速开始 本指南将引导您完成创建“hello world”应用程序的过程,该应用程序在浏览器和服务器之间来回发送消 ...

  3. 风炫安全WEB安全学习第二十七节课 XSS的防御措施

    风炫安全WEB安全学习第二十七节课 XSS的防御措施 XSS防御措施 总的原则 控制好输入/输出 过滤:根据业务需求进行过滤,对email,手机号码这样的输入框进行验证. 转义:所有输出到前端的数据都 ...

  4. 新手学习web遇到的一些乱码问题

    在新手学习web网站学习的时候经常会遇到?????这种乱码,对于刚起步的菜鸟来说真的很头痛,很容易打击继续学的信心当然了对于菜鸟的我最近也遇到过乱码问题,沉浸其中不能自拔,爱的深啊!!!!!我所遇到的 ...

  5. HTML5零基础学习Web前端需要知道哪些?

    HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...

  6. web攻击之一:XSS跨站脚本

    一.浏览器安全 同源策略 影响源的因素:host,子域名,端口,协议 a.com通过以下代码: <script scr=http://b.com/b.js> 加载了b.com上的b.js, ...

  7. 零基础如何学习 Web 安全?(转)

    在网上看了一篇文章<零基础如何学习 Web 安全?>,虽然很多东西的都不是很懂,感觉挺好的copy过来,慢慢消化: 文章地址:https://www.zhihu.com/question/ ...

  8. Java Web使用过滤器防止Xss攻击,解决Xss漏洞

    转: Java Web使用过滤器防止Xss攻击,解决Xss漏洞 2018年11月11日 10:41:27 我欲乘风,直上九天 阅读数:2687   版权声明:本文为博主原创文章,转载请注明出处!有时候 ...

  9. 微服务架构学习与思考(11):开源 API 网关02-以 Java 为基础的 API 网关详细介绍

    微服务架构学习与思考(11):开源 API 网关02-以 Java 为基础的 API 网关详细介绍 上一篇关于网关的文章: 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Ngi ...

随机推荐

  1. Sql 根据当前时间,获取星期一具体日期

    --根据当前时间,计算每周一日期,周日为每周第一天 declare @getDate datetime --set @getDate='2018-12-30' set @getDate='2019-0 ...

  2. Eclipse oxygen 版本汉化教程

    Eclipse oxygen 版本汉化步骤如下: 第一步:打开Eclipse 第二步:浏览器打开网址 http://www.eclipse.org/babel/downloads.php 1.复制对应 ...

  3. vba判断文件是否存在的两种方法(转)

    方法1. 用VBA自带的dir()判断,代码如下: 在 Microsoft Windows 中, Dir 支持多字符 (*)和单字符 (?) 的通配符来指定多重文件 Function IsFileEx ...

  4. vba多条件查询更新EXCEL数据导access数据库

    功能:根据项目号和步骤ID,更新指定步骤完成时间.这里里边要匹配两个条件一个是项目ID “”projectID“” 另一个是 “”StepID“” 步骤ID. Sub SaveFini() Dim r ...

  5. python3 电脑说话

    #coding:utf-8 import win32com.client spk = win32com.client.Dispatch("SAPI.SpVoice") spk.Sp ...

  6. Python中的 __name__有什么作用?最详细解读

    案例说明: Python中的模块(.py文件)在创建之初会自动加载一些内建变量,__name__就是其中之一.Python模块中通常会定义很多变量和函数,这些变量和函数相当于模块中的一个功能,模块被导 ...

  7. BaseDao.util(虎大将军)

    package logistics.util; import java.sql.Connection; import java.sql.PreparedStatement; import java.s ...

  8. C#事务提交

    using (System.Transactions.TransactionScope transcope = new System.Transactions.TransactionScope()) ...

  9. java -关于包装类自动装箱与拆箱拓展+整形常量池

    关于自动装箱与拆箱 1.包装类与基本数据类型的自动转换,叫装箱和拆箱(类型自动转换) 2.自动装箱拆箱是在编译器,编译器自动配转换方法,实现装箱和拆箱.所以这个过程发生在编译期 3.只有需要相互类型转 ...

  10. 【转】async & await 的前世今生(Updated)

    async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐 ...