zoukankan      html  css  js  c++  java
  • xctf-CRYPTO-新手练习区Exercise area-Writeup

    1        XCTF平台crypto新手练习区题目

    https://adworld.xctf.org.cn/task/task_list?type=crypto&number=5&grade=0

    1.1      base64

     

      根据题目应该是base64编码;

     

      打开附件后看到一串符合base64编码的字符串;

      base64解码后得到flag~

    1.2      Caesar

     

     

      打开附件,可以观察格式符合flag的格式cyberpeace{xxx_xxx_xxx},根据题目,可以合理猜测这里用的是凯撒加密,根据第一位c变成了o,可得位移为12;

      通过工具,解密得到flag~

    1.3      Morse

     

     

      根据题目以及附件可以判断该题是摩斯密码,将1替换为-,将0替换为.后,用工具解密即可;

     

     

      根据题目格式说明最后均为小写字母,取得flag~

    1.4      混合编码

     

     

      首先看附件的内容猜测这是base64编码后的,先进行base64解码,发现是Unicode的&#;编码,解码后发现还是base64编码,再次进行解码后出现一串数字,可以推测是ascii码,根据ascii码对照表取得flag~

     

    1.5      幂数加密

     

     

      根据题目可知是幂数加密,又根据题目可知flag是8位大写字母,观察附件的数字串,根据幂数加密的原理,该题最大的数字是8,可知底数应该是1,观察发现有7个0,正好可以将之分成8份,,即88421/122/48/2244/4/142242/248/122,加起来后为23/5/12/12/4/15/14/5,对应26个字母即WELLDONE,取得flag~

     

    1.6      Railfence

     

     

      根据题目“栅栏里面5只小鸡”以及附件内容的格式可知,使用了栅栏密码且栏数为5,直接使用工具解密;

      发现解密后不符合flag格式,看来不是传统型的栅栏密码;

     

      使用W型的栅栏密码解密工具后取得flag~

     

    1.7      easy RSA

     

     

      已知P、Q和e三个参数,求解d;

     

      使用工具,取得flag~

    1.8      不仅仅是Morse

     

      首先用摩斯密码先解一下;

     

      可以看到后面有一串AB组成的字符,原理应该是二进制的方式加密,根据题目提示,是一种食物命名的加密,推测为培根加密;

     

      将AB字符串用培根密码解密后取得flag~

    1.9      Easychallenge

     

     

      附件是.pyc二进制文件,下载后用反编译工具查看其源码;

     

      可以注意到用了三次加密的方法对输入进行加密后和final进行比较,那么我们对final反向解密三次即可;

     

      这是三次加密的代码,分析一波:首先encode1()函数对每个字符转换成ascii码后和36进行亦或操作,然后加上25后重新转为字符串;encode2()函数对每个字符转换成ascii码后先加上36再和36进行亦或操作后重新转换为字符串;encode3()函数就是简单的用base32加密;

     

      针对每个加密步骤写对应的解密步骤后进行解密即可,运行取得flag~

     

    1.10  Normal RSA

     

     

     

      这里有两个文件,思路:pubkey.pem是公钥文件,我们从中可以获得公钥中的N参数,然后使用工具进行分解获得p和q两个参数,然后flag.enc是加密后的文件,用python写个程序进行破解,进而取得flag。

     

      用openssl命令取得pubkey.pem文件中的N和e;

      (Tips:这时N为十六进制,注意转成十进制。)

      取得N后分解获得q和p;

     

      用rsatool.py生成一个私钥后解密flag.enc取得flag即可~

    1.11  转轮机加密

     

     

      轮转密码。首先根据密钥重新排序:即第二行为原本第三行,第三行为原本第七行,以此类推,得到以下内容:

     

      然后根据密文,将每一行的开头调整为对应的密文,得到以下:

     

      没有找到flag;

      重新按密钥进行排序,这次改为第一行对应第一个密钥即第二行,第二行对应第二个密钥即第三行,得到以下:

      

      然后按照密文进行排序:

     

      第一行按照密文排好后我们可以发现其中一行为“fireinthehole”,取得flag~

    1.12  easy ECC

     

     

      已知ECC的其他参数求公钥K;

      直接使用工具求得公钥;

     

    根据题目flag为x+y的值,取得flag~

  • 相关阅读:
    JS常用互动方法
    JS初级学习准备
    IntelliJ IDEA编辑器激活码
    百度个性化地图的使用
    input输入框 只能输入数字 oninput = "value=value.replace(/[^d]/g,'')" input输入框输入大于0的数字 oninput="value=value.replace(/D|^0/g,'')"
    vue中父子组件传值问题 通过props 和 $emit()方法
    Do not use built-in or reserved HTML elements as component id:mask vue报错
    C++ vector的越界错误
    合并K个有序链表
    合并两个有序数组
  • 原文地址:https://www.cnblogs.com/Dio-Hch/p/12917314.html
Copyright © 2011-2022 走看看