xss-labs(level 1-level 8)

1.level 1

打开源码,发现参数是通过GET方法传递的.

查看页面源代码,可以发现get传参name的值test插入了html里,还回显了payload的长度 。

插入payload

?name=<script>alert()</script>

alert()

alert() 是 JavaScript 中的一个全局函数。它用于在浏览器中显示一个带有指定消息的简单对话框。这个对话框通常包含一个 “确定” 按钮,用户点击 “确定” 按钮后对话框关闭。 

2.level 2

查看源码,还是通过GET传参并将变量进行html实体化输出。

htmlspecialchars() 

      htmlspecialchars()是一个在许多编程语言(如 PHP)中用于处理 HTML 代码的函数。它的主要功能是将特殊字符转换为 HTML 实体,以防止这些字符在 HTML 环境中被错误地解析。在 HTML 中,有一些字符具有特殊的含义,例如<、>、&和"。如果这些字符直接出现在 HTML 内容中,可能会导致 HTML 标签被错误地解析,从而破坏页面的结构或者导致安全漏洞(如跨站脚本攻击,XSS)。

构造payload

">  <script>alert()</script>  <"

3.level 3

输入上一关的payload: '> <script>alert()</script> <'

发现输入输出的值都被实体化了,并且使用了单引号闭合 。


HTML事件可以直接嵌入到标签当中,因此不需要进行标签的闭合,从而可以绕过标签被闭合的情况。这里我们使用onclick构造payload,当点击输入框时就会触发onclick事件。

直接输入οnclick=alert(1)发现前后单引号需要闭合。

如果输入'onclick=alert(1)’,查看页面源代码显示

则payload为

'onclick='alert(1) 

显示

再点击输入框触发onclick事件即可

也可以配合javascript伪协议来构造payload

JavaScript 伪协议(JavaScript pseudo-protocol)是一种特殊的 URL 格式,用于在网页中执行 JavaScript 代码。它通常以 “javascript:” 开头,后面跟随着 JavaScript 代码。

' onclick=javascript:alert() '

 4.level 4

直接输入

<script>alert(1)</script>

发现 <> 被去掉了 。

查看源码发现,它使用了一个str_replace函数。

str_replace()

str_replace是 PHP 中的一个字符串函数。它的主要作用是在一个字符串中替换指定的子字符串。例如,你可以用它来替换文本中的错别字、更新特定的词汇,或者将一种格式的文本转换为另一种格式。
函数语法:str_replace ( mixed $search, mixed $replace, mixed $subject [, int &$count ] )
$search:要查找的字符串或数组。它是需要被替换的内容。如果是数组,会在$subject中查找数组中的每个元素并进行替换。
$replace:用于替换$search的字符串或数组。如果是数组,那么它的元素会和$search数组中的元素一一对应进行替换。
$subject:被操作的原始字符串或者数组。如果是数组,函数会遍历数组中的每个元素进行替换操作。
$count(可选):一个变量的引用,用于存储替换的次数。

这里延用上一关的思路,当<>被过滤时使用事件进行绕过。

payload

"onclick="alert(1)

 5.level 5

先输入

<script>alert(1)</script>

发现在第一个<script标签中多了一个_

查看源码

首先对传过来的参数进行了strtolower()处理。

strtolower()

strtolower()是一个在很多编程语言中都存在的字符串处理函数。它的主要功能是将一个字符串中的所有大写字母转换为小写字母。 

这意味着我们我们不能使用Script标签和on事件了。

a标签的基本语法: <a href="目标地址">链接文本</a>。点击“链接文本”这几个字时,浏览器就会跳转到目标网站的首页。

此时要用到JavaScript伪协议。

payload:

"><a href=javascript:alert(1)>1</a>

点击1后就触发了payload,成功绕过! 

6.level 6

查看源码,发现以上标签都被过滤掉了。

在 HTML,JavaScript 和 CSS 中,通常对于标签名和属性名不区分大小写的,但是对于属性值是区分大小写的。

又因为前面有htmlspecialchars函数,

因此构造payload:

"><Script>alert(1)</script>

7.level 7

"><sscriptcript>alert(1)</sscriptcript>

8.level 8

可见双引号也被实体编码了。观察href可以知道,如果插入javascript:alert(1)就可以直接执行payload,但是被过滤了,所以我们对payload进行Unicode编码或者十六进制编码

(1)

在线Unicode编码解码https://www.matools.com/code-convert-unicode

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;

(2)使用hackbar编码

9-18期待下篇!

### 关于 UniApp 框架推荐资源与教程 #### 1. **Uniapp 官方文档** 官方文档是最权威的学习资料之一,涵盖了从基础概念到高级特性的全方位讲解。对于初学者来说,这是了解 UniApp 架构技术细节的最佳起点[^3]。 #### 2. **《Uniapp 从入门到精通:案例分析与最佳实践》** 该文章提供了系统的知识体系,帮助开发者掌握 Uniapp 的基础知识、实际应用以及开发过程中的最佳实践方法。它不仅适合新手快速上手,也能够为有经验的开发者提供深入的技术指导[^1]。 #### 3. **ThorUI-uniapp 开源项目教程** 这是一个专注于 UI 组件库设计实现的教学材料,基于 ThorUI 提供了一系列实用的功能模块。通过学习此开源项目的具体实现方式,可以更好地理解如何高效构建美观且一致的应用界面[^2]。 #### 4. **跨平台开发利器:UniApp 全面解析与实践指南** 这篇文章按照章节形式详细阐述了 UniApp 的各个方面,包括但不限于其工作原理、技术栈介绍、开发环境配置等内容,并附带丰富的实例演示来辅助说明理论知识点。 以下是几个重要的主题摘选: - **核心特性解析**:解释了跨端运行机制、底层架构组成及其主要功能特点。 - **开发实践指南**:给出了具体的页面编写样例代码,展示了不同设备间 API 调用的方法论。 - **性能优化建议**:针对启动时间缩短、图形绘制效率提升等方面提出了可行策略。 ```javascript // 示例代码片段展示条件编译语法 export default { methods: { showPlatform() { console.log(process.env.UNI_PLATFORM); // 输出当前平台名称 #ifdef APP-PLUS console.log('Running on App'); #endif #ifdef H5 console.log('Running on Web'); #endif } } } ``` #### 5. **其他补充资源** 除了上述提到的内容外,还有许多在线课程视频可供选择,比如 Bilibili 上的一些免费系列讲座;另外 GitHub GitCode 平台上也有不少优质的社区贡献作品值得借鉴研究。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值