题目来源:BUUCTF [第二章 web进阶]XSS闯关
目录
level 5 getQueryVariable()函数绕过
step 3:利用Angular(版本号v1.4.0-v1.4.9)沙箱逃逸
一、打开靶机,整理信息
仍然是一个与XSS有关的关卡,那就按流程做吧
使用说明如下:
alert函数
1.介绍
是 JavaScript 中的一个内置函数,用于在浏览器中弹出一个简单的警告对话框。这个对话框会显示一段文本消息,并且通常会带有一个 “确定” 按钮,用户点击 “确定” 按钮后,对话框会关闭,页面继续执行后续代码。
2.基本语法
alert(message);
message是要在警告对话框中显示的内容,可以是字符串、数字、布尔值等类型的数据。如果传入的不是字符串类型,JavaScript会自动将其转换为字符串。
JavaScript
一种广泛使用的高级、动态、弱类型、基于原型的编程语言,最初是为了实现网页的交互效果而设计的,如今其应用场景已经远远超出了网页开发的范畴。
延伸到前端框架
早期的网页开发主要使用HTML、CSS、JavaScript来实现基本的页面展示和交互功能。随着互联网的发展,网页的复杂度不断增加,前端代码变得越来越庞大和难以维护。为了解决这些问题,前端框架应运而生,它们提供了一套标准化的开发模式和工具,帮助开发者提高开发效率和代码质量。
※常见的前端框架:
1.视图层框架:React、Vue.js、Angular
2.移动端框架:React Native、Vue Native、Ionic
3.CSS 框架:Bootstrap、Tailwind CSS、Foundation
4.状态管理框架:Redux、Vuex、MobX
5.路由框架:React Router、Vue Router、Angular Router
二、解题
level 1
step 1:寻找注入点,进行注入
同样没有注入点,看url,看起来可以传参的样子
step 2:构造payload
第一关,直接传参,利用回显看有无过滤
<script>alert('xss')</script>
并未过滤,第一关成功,进入下一关
突然开窍了,xss注入核心步骤就是构造恶意脚本,而我们的恶意脚本是JavaScript语言来执行,所以学习了解JavaScript语言也是很重要的。
比如上面第一关能注入的原因就是网站接收用户输入时,没有对输入内容进行严格的过滤,直接将输入内容存储到数据库或者作为响应返回给浏览器,浏览器会将其当作HTML和JavaScript代码来解析执行。
level 2 简单绕过
step 1:直接上payload,看回显
没有任何显示,应该是有过滤
step 2:查看源代码
if(location.search == ""){ //location.search是window.location对象的一个属性,它返回URL中问号(?)及其后面的部分,如果URL没有查询字符串,location.search的值就是空字符串
location.search = "?username=xss" //如果查询字符串为空,将其设置为 "?username=xss"
}
var username = '<script>alert('xss')</script>';
document.getElementById('ccc').innerHTML= "Welcome " + escape(username);
//document.ge