0x00 前言
- CTF 加解密合集
- CTF Web合集
- 网络安全知识库
文中工具皆可关注 皓月当空w 公众号 发送关键字 工具 获取
0x01 题目
0x02 Write Up
尝试访问之后返回了源码。可以看到重点是在setTimeout
首先来看setTimeout,setTimeout的意思就是说在一段时间后执行指定的方法,如果超过两个参数的话,会将多的参数当做值传入指定的方法。
也就是说setTimeout(getflag, delay,flag);
在delay秒之后,会执行getflag方法,并且会将flag当做参数进行传入
下面的方法,就是说在1000秒之后,就会执行这个匿名方法。
setTimeout(() => {
clearTimeout(t);
try {
res.send('Timeout!');
} catch (e) {
}
}, 1000);
这里需要知道一个知识:浏览器内部使用32位带符号的整数,来储存推迟执行的时间。这意味着setTimeout最多只能推迟执行2147483647毫秒(24.8天)超过这个时间会发生溢出。
如果溢出了之后,相当于从0开始,整数上溢,那么相当于我们可以控制只要在1000之内就可以
poc:http://63395c76-0edf-4118-80cd-354a83ff94cd.challenge.ctf.show/flag?delay=2147483648
0x03 other
欢迎大家关注我朋友的公众号 皓月当空w 分享漏洞情报以及各种学习资源,技能树,面试题等。
以上