自己做CTF还是没有经验,本来以为crypto更多应该是python编程的,结果这个100的题目是Do you love Arithmetic?
打开文件来看内容是
# charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789{}"
# len(cipher) = 50
0.767613654951
0.5474434438
0.0141530116256
0.905785091354
0.984599892983
0.108635603812
0.140881010733
0.048862585782
0.0314901531258
0.234154054307
然后就是没有思路了。。。它题意应该是字符集是给定的那些,然后密文的长度是50,之后给了10个小数。不知道要干嘛。最后是曹老师脑洞大开想出解法。
现在我通过解法来倒退一下这题该怎么想,但也只能是非得按照出题者的脑洞来想吧。
字符集是64个,给了10个小数。
第一步:要通过这10个小数在字符集中选择哪些字符
通过小数怎么选择呢,又不是整数或是数组下标那般,就得想到因为字符集是64个,把小数按照64进制转10进制的思想,每一个小数乘以64取其整数,这样就得到一个选择了,然后因为密文的长度是50,10个小数,所以这时乘以5次64就好了,这时会惊奇地发现这几个整数对应的正是White,说明思路对了。
然后对第二个小数也这么做,对接下来的小数都这么做了之后发现,结果并不理想。得到的并不是想象中的WhiteHat{FLAG}这种形式,在第二个小数乘完之后,取完整数发现不是hat,而是一个移位的hat字符,又得想到可能要一个一个移位,第二个小数移一位,第三个移两位。。。第十个小数要移九位,这样。
得到了一个可喜的结果WhiteHat{3927ff16cee6714aa24e5c68ac7ab6b53109e187}
话说以后真不希望有这种脑洞题了。。。乖乖地python编程不好吗。。。当然那样做我也不一定会。。。
版权声明:本文为博主原创文章,未经博主允许不得转载。