钥匙开锁的游戏–一道随机数种子爆破的CTF

  • A+
所属分类:逆向工程

昨天的文章因为看到留言说比赛还没有结束,所以就先删了。今天结束了再发。


今天在一个交流群的看到的CTF题目,不知道是什么比赛的,研究了一下,写一下解题思路。

钥匙开锁的游戏--一道随机数种子爆破的CTF

返回包,cookie里面有明显异常,提示从lock中推导出key。


使用工具扫描网站,扫描出来一个index.bak

钥匙开锁的游戏--一道随机数种子爆破的CTF

看到mt_rand函数,就知道考点是在爆破随机数种子这一块了

看返回包中的lock的值,每一次都是固定的,所以推测随机数种子也是固定的,后端代码如下

钥匙开锁的游戏--一道随机数种子爆破的CTF

所以我们只要爆破出种子的值就可以,得到key的值了


使用爆破工具 php_mt_seed - PHP mt_rand() seed cracker


下载完了以后,cd,然后make,应该就可以了。但是mac上编译会报错错误,直接gcc编译就可以了

钥匙开锁的游戏--一道随机数种子爆破的CTF

通过代码算出爆破的参数

钥匙开锁的游戏--一道随机数种子爆破的CTF

大概五分钟左右就能得到第一个种子

钥匙开锁的游戏--一道随机数种子爆破的CTF

通过代码验证一下,符合预期值

钥匙开锁的游戏--一道随机数种子爆破的CTF

这里有一个点,要注意一下

钥匙开锁的游戏--一道随机数种子爆破的CTF

通过响应头,我们可知php的版本为5.6所以我们也要使用这个版本的php,来运行代码,否则和我们的预期值会有偏差。


然后把我们算出来的key的值,放到cookie中发包

钥匙开锁的游戏--一道随机数种子爆破的CTF

本以为可以一发入魂,但是想到,还是提示这个

钥匙开锁的游戏--一道随机数种子爆破的CTF

在这个地方卡了好久,都以为是自己的思路错了,然后使用程序把全部的种子都跑出来了。除了这个种子以外,还有一个种子。但是试了还行不行。

最后加了一个XF头,搞定

钥匙开锁的游戏--一道随机数种子爆破的CTF

钥匙开锁的游戏--一道随机数种子爆破的CTF


发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: