zoukankan      html  css  js  c++  java
  • 越南CTF的crypto 100

    自己做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编程不好吗。。。当然那样做我也不一定会。。。


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    JDBC进行Oracle数据库操作。
    java数据库编程:使用元数据分析数据库
    Java事务处理总结
    TCP、UDP数据包大小的限制
    Java SWT编程基础
    Win7窗口最大化和最小化快捷键
    CentOS7 yum 安装mysql 5.6
    mybatis简介
    mybatis中mysql和oracle的差异
    Java 11 将至,不妨了解一下 Oracle JDK 之外的版本
  • 原文地址:https://www.cnblogs.com/lightspeedsmallson/p/4785798.html
Copyright © 2011-2022 走看看