BUUCTF XSS闯关1

本文探讨了一连串关于跨站脚本攻击的挑战,涉及无过滤、过滤机制的突破、伪链接、getQueryVariable绕过、以及AngularJS沙箱逃逸等技术。通过实例展示了如何逐步攻破这些安全防护措施并获取flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、审题发现是xss(跨站脚本攻击)类型题目:

(1)第一关:无任何过滤:

执行:script>alert("xss")</script>

这段代码是一个简单的JavaScript脚本,其中包含一个alert函数调用,用于显示一个弹出框,内容为"xss"。这种代码通常被称为跨站脚本(XSS)攻击载荷。

当这段代码被嵌入到网页中,并且网页被用户访问时,浏览器会执行其中的JavaScript代码。在这种情况下,会弹出一个包含"xss"的警告框,可能会误导用户或利用用户的信任执行恶意操作。

(2)第二关:存在过滤,使用了js所编写的一个过滤,username被escape加密

执行:1';alert(1);'1   

使用';结束前面的语句,后面加上函数alert(1);使用'1闭合后面的单引号,当然也可以使用"//"将其注释,最终  username = alert(1);,执行了alert函数。

(3)第三关:存在过滤,输入1';alert(1);'1 ,发现  '  字符被转义。

所以执行:1'';alert(1);'1,则 ’ 转义为 \ 后另一个 ' 也可以完成闭合。

(4)第四关:页面一直在跳转,伪链接问题。

执行:jumpUrl=javascript:alert(1)

javascript:alert(1),浏览器会把javascript后面的内容当做代码执行,直接在当前页面执行。代码中接收jumpUrl作为跳转url。

(5)第五关:getQueryVariable()函数绕过

所以执行:autosubmit=1&action=JavaScript:alert(1);//

JavaScript后面的代码会直接执行。所以action=1,绕过getQueryVariable()函数。对于 // 可有可无

(6)第六关:(xss模板注入)沙箱逃逸

测试{{8*9}}发现是xss模板注入的题目,具体为Angular JS客户端模板注入。

执行:{{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}

沙箱逃逸
这个方法,就是确认了存在xss模板注入以后,我们对Angular(版本号v1.4.0-v1.4.9)沙箱逃逸

这段代码是一个利用AngularJS漏洞进行的攻击载荷。具体分析如下:

{{'a'.constructor.prototype.charAt=[].join;:这部分代码试图修改JavaScript中String对象的原型,将其charAt方法替换为数组的join方法。这是为了绕过AngularJS的防御机制,使得后续的代码能够成功执行。

$eval('x=1} } };alert(1)//');:这是AngularJS中的一个内置函数eval的调用。eval函数接受一个字符串参数,并将其作为AngularJS表达式进行求值。在这里,字符串参数包含恶意代码 x=1} } };alert(1)//'。这段代码试图关闭现有的AngularJS表达式,然后触发一个JavaScript alert弹窗,以实现攻击目的。

}}:这是为了结束AngularJS表达式。
 

(7)得到flag:

### 关于 BUU CTF 中 XSS 题目的分析 BUUCTF 是一个专注于网络安全竞赛的平台,其中包含了多种类型的挑战,包括跨站脚本攻击(XSS)。以下是针对 XSS 类型题目的一些常见解法和技巧。 #### XSS 攻击简介 XSS(Cross-Site Scripting)是一种常见的安全漏洞,允许攻击者通过注入恶意脚本来执行用户的浏览器上下文中。这种攻击通常分为存储型 XSS 和反射型 XSS[^1]。 #### 存储型 XSS 的解决方法 对于存储型 XSS,攻击者的输入会被服务器保存并显示给其他用户。解决方案通常是找到可以提交数据的地方,比如评论框或者留言板,并尝试插入 JavaScript 脚本。例如: ```html <script>alert('XSS')</script> ``` 如果上述代码被执行,则说明存在存储型 XSS 漏洞[^2]。 #### 反射型 XSS 的解决方法 反射型 XSS 发生在用户请求被立即返回到浏览器的情况下。这类问题可以通过构造特定 URL 来测试。假设有一个搜索功能,URL 如下所示: ``` http://example.com/search?q=<script>alert('XSS')</script> ``` 当访问此链接时,如果弹出警告框,则表明该站点可能存在反射型 XSS 漏洞[^3]。 #### DOM 型 XSS 解决方案 DOM 型 XSS 不依赖于服务端响应,而是完全基于客户端 JavaScript 执行的结果。要检测此类漏洞,需审查页面中的动态内容加载逻辑。例如,检查是否存在未过滤就直接嵌入 HTML 的变量赋值操作: ```javascript document.write(location.hash.slice(1)); ``` 以上代码片段可能会导致 DOM 型 XSS 如果 `location.hash` 数据未经适当清理就被写回网页中[^4]。 #### 编码与转义技术的应用 为了防止 XSS 攻击,在开发过程中应采用编码措施来处理特殊字符。HTML 实体编码是最常用的方法之一;它会把 `<`, `>`, `&` 替换为其对应的实体形式 (`<`, `>`, `&`) ,从而阻止它们作为标签解析[^5]。 --- ### 提供一段简单的防御代码示例 下面是一个 PHP 函数的例子,用于展示如何对用户输入进行基本的安全验证以防范 XSS: ```php function sanitize_input($data) { return htmlspecialchars(trim($data), ENT_QUOTES, 'UTF-8'); } ``` 调用这个函数能够有效减少因不当输入引发的风险[^6]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值