目录

  • Crypto
    • easy crypto
    • bAcOn
    • 敌军密报
  • Re
    • easy re
    • 跳到对的地方
    • 简单的XOR
    • 多密码表替换

Crypto

easy crypto

首先,这个可以很容易的看出这是一个base64加密一串密文,然后用base64解密后是


可以看出这就是flag的格式,所以一般就是凯撒加密了,但是因为有花括号下划线之类的,所以是凯撒的一个变形rot13

bAcOn

这题是给了一个字符串baCoNBacoNbaconbACoNbacOnbAconBacOnbacoNbaconbacOnbACOnbACoN
可以看出给了我们的提示就是bacon,培根。
我这边的话是改了一个网上找的python代码,然后直接跑出来了。

因为培根密码是有两张密码表,同时因为大小写的话也有种情况,解出来应该是有四种(我这边另外一种以小写字母为b以大写字母为a的显示结果没有放出来)

import re
alphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
first_cipher = ["aaaaa","aaaab","aaaba","aaabb","aabaa","aabab","aabba","aabbb","abaaa","abaab","ababa","ababb","abbaa","abbab","abbba","abbbb","baaaa","baaab","baaba","baabb","babaa","babab","babba","babbb","bbaaa","bbaab"]
second_cipher = ["aaaaa","aaaab","aaaba","aaabb","aabaa","aabab","aabba","aabbb","abaaa","abaaa","abaab","ababa","ababb","abbaa","abbab","abbba","abbbb","baaaa","baaab","baaba","baabb","baabb","babaa","babab","babba","babbb"]
def decode():upper_flag = False  # 用于判断输入是否为大写e_string = input("please input string to decode:\n")e_string=change(e_string)print(e_string)if e_string.isupper():upper_flag = Truee_string = e_string.lower()e_array = re.findall(".{5}",e_string)d_string1 = ""d_string2 = ""for index in e_array:for i in range(0,26):if index == first_cipher[i]:d_string1 += alphabet[i]if index == second_cipher[i]:d_string2 += alphabet[i]if upper_flag:d_string1 = d_string1.upper()d_string2 = d_string2.upper()print ("first decode method result is:\n"+d_string1)print ("second decode method result is:\n"+d_string2)return
def change(s):str=""for i in s:if(i>='a' and i<='z'):str+="a"if(i>='A' and i<='Z'):str+="b"return str
def change2(s):str=""for i in s:if(i>='a' and i<='z'):str+="b"if(i>='A' and i<='Z'):str+="a"return str
if __name__ == '__main__':print ("\t\tcoding by qux")while True:print ("\t*******Bacon Encode_Decode System*******")print ("input should be only lowercase or uppercase,cipher just include a,b(or A,B)")print ("1.encode\n2.decode\n3.exit")s_number = input("please input number to choose\n")if s_number == "1":encode()input()elif s_number == "2":decode()input()elif s_number == "3":breakelse:continue

敌军密报


题目展示就是这样的,一个密文,以及一个文件可以下载。这边这个文件用记事本打开稍微看了一下,有很多类似.pyt、__main__之类的东西,所以应该就是一个python编译后的文件了,这边推荐一个在线反编译python的网站http://tools.bugscaner.com/decompyle/

可以发现的是有四层加密
第一层凯撒加密
第二层base32
第三层base16
第四层栅栏加密取2

这边分享下我是如何分析这些代码是如何加密的。
在得到这个python代码后,每一种加密其实都可以单独取出来,然后自己定义一些需要加密的字符,然后可以看到加密后的内容,然后可以判段,如果判断不出来也没关系。
只需要将他的程序逆着写,然后将我们测试的加密后的内容,可以还原出加密前的字符,那么我们逆着的程序也就没有写错了。这样我们就能一步一步逆向出明文了。

Re

easy re

这一题是真的太没有难度了

文本编辑器直接就搜出来了,当然更合适的做法肯定是用ida或od去搜

跳到对的地方


这一题的话,就是考察最基本的od动态调试的跳转,使用中文搜索引擎,然后找到相应的内容,双击进去,就可以看到这句话所在的汇编代码段了。然后一般是选择push ebp去跳转就能进去了。

启动程序,这边比较直接的就是直接跳进去,找一个能执行到的地方,改下汇编,让他jmp到我们之前找到的地址。


当然,这样可能会导致我们程序崩溃,但是我们只是要这个flag,只要让他显示出来就好了。

简单的XOR

这题我当时是没有做出来的,只要当时没有找到真正的main函数,后来我发现一个找main函数的技巧。因为你直接运行那个需要你逆向的程序,是会出现一些信息的

输入123,他提示我try again。于是可以在ida中搜索这个字符串,ALT+T。


然后我就找到了他真正的main函数,很容易有木有


找到了main函数,就可以看的出来,他就是要将我们输入的东西,和v11到v34的值进行异或,最后的结果要等于v35就是”hang_dian_xin_gong_ctf!!”。 这边需要的知识点就是,抑或的时候A ^ B=C那么A ^ C=B 、B ^ C=A就都成立了

于是写了个脚本

就获得了flag

多密码表替换

找到main函数如下


我把它改写成python代码大概是这个意思


然后最后这个v14等于v10就是正确的

这样我们就知道v14,于是上面的代码中我们不知道的就只有需要我们输入的buf[]。所以写一个求buf的代码

运行就能得到flag

记一次院赛CTF的Crypto和Re题(入门)相关推荐

  1. 记一次院赛CTF的Pwn和Misc题(入门)

    目录 Pwn easy pwn 莽撞人 反向读取 Misc drop the beats 拼东东 消失的50px Pwn 见到别的比赛的pwn题才幡然醒悟,已经没有比这些更简单的pwn题了. easy ...

  2. 记一次院赛CTF的WEB题(入门级别)

    目录 签到一 签到二 口算小天才 easy php 录取查询 我爱python Spring 这次院赛的题目比较基础,适合给刚入门CTF的小白提供一个大致CTF解题思路.(主要因为本人小白,表示能学到 ...

  3. 某新生院赛CTF 移动题writeup

    题目提供了一个apk,常规考察内容一般为逆向.挖洞~ 1.程序初步分析 获取一个apk后第一件事情肯定是运行,看看题目到底是要干嘛,是要逆向分析算法,还是利用一些Androd机制.截图如下: 程序只有 ...

  4. 某次ctf 中crypto的基础题

    文章目录 一.题目描述 二.解题分析 1.分析过程 2.还原加密 总结 一.题目描述 打开题目链接文件,一看妥妥的python代码,最后一行print函数后面注释了一串字符串: ]$^<[< ...

  5. 2017哈理工 低年级组院赛初赛 G-做游戏 【水题】

    题目描述 今天是Tabris和mengxiang000来到幼儿园的第9天. 为了庆祝这美好的一天,老师组织同学们做游戏,拿来了好多骰子. 游戏规则: 1)两个人每人轮流掷骰子,操控同一个小人在一个有向 ...

  6. 记2015沈阳区域赛

    前记 基本确定了要去沈阳和上海打区域赛,听说苏大cp也会沈阳,于是我们的最终目标变为了压苏大. 周五 下午一点左右的飞机,本来想要早上赶概率论作业然后交到学校去,结果睡晚了,干脆就早点去了机场,然后大 ...

  7. ZUFE 2017院赛 - Problem K: Jelly与狗头人的地下世界 (DP)

    一个简单的DP. 只能往下和往右传递. 对DP不够敏感,打院赛的时候用记忆化搜索过的,浪费不少时间. #include <iostream> #include <stdio.h> ...

  8. CTF秀CRYPTO密码学签到

    CTF秀CRYPTO密码学签到 继续开启全栈梦想之逆向之旅~ 这题是CTF秀CRYPTO密码学签到 发现类似flag的}wohs.ftc{galf: 直接反转得到flag . . 为什么怎么简单的题目 ...

  9. [SWPUCTF] 2021新生赛之Crypto篇刷题记录(11)

    [SWPUCTF] 2021新生赛之Crypto篇刷题记录① [SWPUCTF 2021 新生赛]crypto6 [SWPUCTF 2021 新生赛]ez_caesar [SWPUCTF 2021 新 ...

最新文章

  1. 机器学习的入门平台天花板,还可免费实操经典教程,确实也没谁了
  2. 些许注意事项(初学)
  3. rough and crude
  4. 苹果官方首次松口:新款iPhone SE有望近期亮相
  5. non linear processor
  6. 力扣题目——53. 最大子序和
  7. Spring中为什么实体类不用注入
  8. keil uvision4 注册机 使用方法
  9. android代码改字体颜色,如何更改Android Studio的代码字体和颜色
  10. linux tar 命令安装,Linux tar 命令 command not found tar 命令详解 tar 命令未找到 tar 命令安装 - CommandNotFound ⚡️ 坑否...
  11. python 实现 n 次方_python实现pow函数(求n次幂,求n次方)
  12. java语言基础之关键字1(public、protested、private、static)
  13. FreeMarker源码分析(八)
  14. 如何顺利获得美国工作签证
  15. java多线程详解及线程池创建
  16. Android实现二维码扫描功能(三)-闪光灯控制
  17. SAP JCo业务情景:在线发票
  18. 【Go】用 Go 访问 Redis
  19. O2O、C2C、B2B、B2C、F2C的区别在哪里?
  20. windows11 安装vc++6.0

热门文章

  1. oracle画圆,元宵佳节:看Oracle技术粉们用SQL画团圆
  2. 【PowerBi】Power Query导入Excel数据
  3. 二十三、 爬取mzsock网站写真社区
  4. Python用泰勒公式模拟函数
  5. 叠加原理 戴维南定理
  6. tornado函数和类的导入和ui_modules  , ui_methods
  7. python tfidf特征变换_Python机器学习之“特征工程”
  8. docker启动sqlserver_ASP.NET Core容器化技术Docker零基础从入门到实战演练
  9. 研究生一年级,非计算机专业,自学机器学习现实吗?
  10. GlobalPointer:用统一的方式处理嵌套和非嵌套NER