XSS Challenges

本文详细介绍了XSS挑战的各个阶段,包括无过滤XSS、属性中的XSS、选择列表中的XSS、隐藏域中的XSS等,讲解了如何在不同场景下构造XSS注入,涉及JavaScript伪协议、编码绕过、IE浏览器特性和CSS层叠样式表的注入技巧。每个阶段都提供了具体的测试方法和解决方案,适合网络安全和Web开发人员学习。
摘要由CSDN通过智能技术生成

XSS Challenges

具体详细的靶场信息,可以访问我的博客

靶场地址

stage 1(无过滤的 XSS 注入)

image_24nXDhmhLj.png

📌注:提示中的内容需要选中才会显示

image_8mhQ_J4lzM.png

document.domain #该属性是一个只读的字符串,包含了载入当前文档的 web 服务器的主机名。

在规定位置可以执行 js 代码

首先看一下页面的逻辑结构

在输入框里面输入内容,下面会返还输入内容

image_dGXOA5sEt5.png

看回显位置的时候,不要关注在页面有没有回显

可以用 BP 抓包,也可以用页面的检查

用 BP 抓包的时候,切记随机字符串只能用一次,抓到的包最好不要放行,可以做一次,刷新一次页面

搜索框中进行搜索信息,在页面下方会显示出搜索内容

按 F12 分析源代码

image_XBME2JS-m7.png

测试是否存在 XSS 可以直接在目标页面测,也可以自己创一个页面测

直接在目标页面测

输入<script>alert(document.domain);</script>F12 看一下它在代码中的位置

image_Id06-MS94X.png

image_dwq3G4No3N.png

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

image_nhj1kyA9OX.png

显示我们的结果,说明已经注入成功

image_eInj3gQc2y.png

在规定位置不能执行 js 代码

这个时候我们要想办法解决,可以联系到 sql 注入中的闭合,利用闭合将过滤的地方闭合,然后换个位置进行注入

<b>"1"</b> 如果这串js 代码中 1 不能正常执行,我们可以加一个"引号,闭合前面的",也就是<b>"1" xxxxxx "</b> ,这样我们就可以在里面写入我们想注入的内容。

再将代码改为<b>"1"</b> xxxxxx "</b> 这样我们输入的 js 代码就在 B标签之外

例如

输入代码freenice"</b><script>alert(document.domain);</script>

image_g94a9XRSAq.png

这个时候发现已经不在 B 标签里面了,而是在外面

image_gbNOsj5FKn.png

细节分析

在外面执行完 js 代码后,发现<b>"1"</b> xxxxxx "</b> 中最后面的闭合没了

image_K70LAaFAsM.png

其中"变为文本信息也就是"``"``" 在 F12中,只有中间的双引号可以点击

</b> 是标签,会被系统判断为无用信息,自动给去掉。(浏览器的机制)

stage 2(属性中的 XSS 注入)

image_ZSIGTUGRJv.png

1、使用闭合 input 标签方式进行注入

首先我们可以先在输入栏里输入 freenice

发现输入和回响的位置是一个地方

image_KIis98yIbj.png

通过检索页可以发现,freenice 这个地方不能执行 js 代码

image_S5AFRdX2ku.png

可以输入一串 js 代码

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

image_ww-lJcXfk5.png

xuegod 的位置在 input 中的 value 属性当中。当我们注入 JavaScript 代码到 value 中时,页面加载并不会触发执行代码,因为我们输入的信息被当做文本信息存在 value 中。所以我们需要闭合 value将 JavaScript 代码插入到属性外面。

原代码:<input type="text" name="p1" size="50" value="freenice">

使用">闭合标签并插入 JavaScript 代码,在输入框中,输入以下内容:

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

image_VpYJCr9Y4F.png

image_N6fm-HFEFy.png

输入后代码结果如下:

<input type="text" name="p1" size="50" value="freenice"><script>alert(document.domain);</script>``">[^注释1]

2、在 input 标签属性中注入事件

HTML 中的事件概述:

对于 HTML 属性事件的简单介绍

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

例 1:onmouseover 事件:当鼠标指针移至元素之上时运行脚本

输入以下代码:

" onmouseover=alert(document.domain)>

使用方式很简单,使用双引号闭合 value 属性,添加事件 onmouseover 当鼠标移动到添加事件的元素中时,执行 JavaScript 代码 alert(document.domain)弹出域名

输入<input type="text" name="p1" size="50" value="freenice" onmouseover=alert(document.domain);"">

image_2KPpja9Ma8.png

可以看到当鼠标移动到输入框会自动触发 XSS,所以事件就需要用户手动触发才能够被执行。

stage 3(选择列表中的 XSS 注入)

image_-ehiukOb6N.png

查看页面结构,搜索 tokyo,选中右侧搜索区域,会在下面提示搜索内容和右侧的搜索区域

Hint: The input in text box is properly escaped.

#提示:文本框中的输入已正确转义。就是第 3 题中,程序员已经加了过滤。

image__-hHi_r_Bb.png

查看网页代码

HTML 表单用于搜集不同类型的用户输入。我们输入的信息都是以表单的方式提交到服务器。

Form 表单

image_ZEJWBwIWWt.png

代码中定了一个文本输入为 p1 然后使用 select 元素创建一个下拉列表为 p2 。

尝试在搜索框中进行 XSS 注入

输入:<script>alert(document.domain);</script>

image_2zfFSGpf4D.png

我们注入的信息被转义成文本信息显示出来了,并没有被执行。

image_JWLgXe5vTj.png

下面我们对选择列表进行注入

因为我们在输入时,下拉列表选项是不能进行修改的,但是我们可以使用 burpsuite 截取数据包对右侧选择列表进行注入。

开始截取,然后在火狐浏览器中输入数字 1 ,查看截取效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值