热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

XSS漏洞绕过

Web安全攻防学习笔记


Web安全攻防 学习笔记


一、XSS 漏洞

1.1、跳过 Stage #9

在 span 标签中添加 Onclick= "alert(document.domain)" (其他关卡也可以这样跳过)

在这里插入图片描述


1.2、domain 过滤绕过

首先还是构造特殊无害字符串,响应中寻找字符串观察闭合格式。
在这里插入图片描述



  1. 双写绕过

"><script>alert(document.dodomainmain);</script>


  1. 编码绕过

    (1)加密 alert(document.domain)
    (2)得到 YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ==
    (3)atob 解码 base64
    (4)eval 执行 Javascript 代码



"><script>eval(atob('YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ=='));</script>

1.3、绕过替换 script 和 on 事件的 XSS



  • script 替换成 xscript
    在这里插入图片描述

  • onmouseover 替换成了 onxxx
    在这里插入图片描述

  • Javascript 伪协议也不行
    在这里插入图片描述

在 Stage #11 演示

&#09; tab 制表符 html 十进制编码
&#160; 空格 制表符 html 十进制编码
=> (在这里四个空格 ≠ 一个 tab, 当然也可能是浏览器或者是编码本身的问题)

">#09cript:alert(document.domain);">xss
">#160&#160&#160&#160cript:alert(document.domain);">xss




二、利用 IE 特性绕过 XSS 过滤

2.1、没有 IE 浏览器可以用 IETester 代替



  1. 官网:https://www.my-debugbar.com/wiki/IETester/HomePage



  2. 在 IETester 中打开 Stage #xx 网址进行测试



  3. 在 IETester 中进行测试,因为各个版本的 IE 都需要进行测试,Windows10 里面自带的 IE 不会执行



2.2、Stage #12 绕过的引号及尖括号过滤



  1. IE 中两个反引号 &#8220; 可以闭合一个左边双引号 "



  2. 那么比用尖括号的情况下,可以这样闭合: &#8220;οnclick=alert(document.domain) 。(这个只适用于IE浏览器,且可能不是每个版本都兼容)



2.3、Stage #13 利用 CSS 特性绕过 XSS 过滤



  1. CSS 层叠样式表,是一种用来表现 HTML 或 XML 等文件样式的计算机语言。可以修饰页面效果,拿网站效果演示,修改 css 看页面效果



  2. 观察发现,输入的内容存放在 style



  3. 输入背景设置 background:url("Javascript:alert(document.domain);"); (并不是所有版本的 IE 都可以)



2.4、Stage #14 IE 中利用 CSS 触发 XSS

        css expression(css表达式)又称 Dynamic properties(动态属性)是早期微软 DHTML 的产物,以其可以在 CSS 中定义表达式(公式)来达到建立元素间属性之间的联系等作用,从 IE5 开始得到支持,后因标准、性能、安全性等问题,微软从 IE8 beta2 标准模式开始,取消对 css expression 的支。



  • CSS 中执行 JS

    IE5 及其以后版本支持在 CSS 中使用 expression,用来把 CSS 属性和 Javascript 表达式关联起来


here:expres/\*\*/sion(if(!window.x){alert(document.domain);window.x=1;});

=> # 后面是一个 JS 的判断: 如果 window.x 参数不存在, 那么执行后面的语句
# 由 here:expression(if(!window.x){alert(document.domain);window.x=1;}); 改写而来
# 因为存在 expression -> xxx 替换
here:e\\0xpression(οnmοuseοver=function(){alert(document.domain)})

=> # 意为:onmouseover 事件触发后面的匿名函数
# 由 here:expression(οnmοuseοver=function(){alert(document.domain)}) 改写而来
# 因为存在 expression -> xxx 替换




三、16 进制绕过过滤触发 XSS

3.1、十六进制介绍

        十六进制转换,16 进制每一位上可以是从小到大为 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 16 个大小不同 的数,即 逢 16 进 1,其中 A,B,C,D,E,F(字母不区分大小写),这六个字母来分别表示 10,11,12,13,14,15


3.2、Python —— 16 进制转换

import binascii

s = binascii.b2a_hex(">" .encode("utf8"))
print(s.decode()) # 把 > 转换为 3e; 测试得 <转为 3c

print("\\x"+s.decode()) # 在编码前面加上 \x, 第一个 \ 用来转义, 最终得 \x3e

在这里插入图片描述

为什么要加 \x

因为 Javascript 不会自动将 3e 看作是 >,因为它不认识,所以要加上 \x 即 \x3e Javascript 才会在执行是转换为 >

Stage #15 测试



  1. 尝试得,输入之前的字符串都会被当作是字符串存放在 value 中



  2. 双斜杠+16 进制绕过



\\x3cscript\\x3ealert(document.domain);\\x3c/script\\x3e
# \x3c 与 \x3e 分别表示 <和 >
# 还有一个 \ 用于转义其后面的 \

在这里插入图片描述




四、Unicode 绕过过滤触发 XSS

4.1、Unicode 介绍

        Unicode(万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。

        Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种中的每个字符设定了统一并 且唯一的二进制编码,满足跨语言、跨平台进行文本转换、处理的要求。


4.2、Python —— Unicode 转换

import binascii

s = binascii.b2a_hex(">".encode("utf8"))
print(s.decode()) # 把 > 转换为 3e; 测试得 <转为 3c

print("\\u00"+s.decode()) # 在编码前面加上 \u00, 第一个 \ 用来转义, 最终得 \u003e

Stage #16 测试



  1. 尝试得,输入之前的字符串都会被当作是字符串存放在 value 中

\\u003cscript\\u003ealert(document.domain);\\u003c/script\\u003e

在这里插入图片描述



推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
author-avatar
傅笑寒
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有