解决题目找到你的另一半

注:本文出发点系分享一个好玩的题目,为避免一些不愉快的事情发生,91ri对文章略做修改,希望看文的朋友不要恶意加群骚扰,谢谢。

早上刷某乎,看到妹子找程序员的帖子,然后出了个题,解决问题的才可以进入相关的“交友群”。

虽然啥也看不懂,但是看起来蛮好玩的样子:

好久没玩 CTF,手有点痒,所以就支起摊子开动了。

开始一头雾水,完全不知道该干啥,盯着这一坨字符串看了半天,旁边一同事说了句每行开头都是 M,然后就搜了下每一行都是M开头,还真找到了这个,真是大千世界,无奇不有:

随便找了一个UUENCODE在线解码,扔进去之后就有能看懂的东西了:

哦,原来是RSA,虽然以前没在搞懂这玩意,但是还是了解一点,在加上强大的 Google,先看看原理:

先解决题目里 M 的问题,说是使得 N 尾数是 233 的最大四位数,一个脚本就搞定:

然后就是用 RSA 解密了,当然不用自己动手了,找到这个:

改了下原来的 keyGeneration 函数和主函数:

就得到群号了,这里就不贴了,233。

不过好像还没完,要验证码才能加入,又是个坑。

开始没想,以为就是 d23e6e9994bb6fae874dab35e46fd75b9dd15be, 提交之后就给我拒了,拒绝理由还给我个 400 Bad Request, 挺专业!

仔细看了下发现好像是 git commit 的 hash,所以可能他的意思就是这次提交的代码的结果,clone 了他的gist,查了下 log 发现还真有这次提交,reset 过去之后就是 Roman Hitman,还好刚才在 Google 的时候发现某大神以前写的脚本,跑了一下得到了这些东西:

一激动赶紧把验证码扔过去测试了一下,被拒绝了。

看了下 Date.Now.Format 和 now 有关以为得自己拼接,然后拿 php 弄出来这个(这里有个小插曲就是斐波拉契数列的第10个数是55,不是34,详细见百度百科黑体加粗提示):

扔过去还是不对,就读了下 RomanHitman 源码,才发现是这个作者把开头的字母换成了Z,估计是想留个坑给别人吧,也怪我不仔细,改过了再跑一下就好了。

终于看到了Accept。

然后,我就默默的跑来写攻略的,果然是应该注孤生的。

PS:看了下群相册,居然还有什么终极三问,因为我也不知道同时掉水里该救谁,所以还是退了吧!

嗯,至此,所有的坑都踩完了,感觉心好累。

【via@Tairy