buu1

  1. Easyre

main函数

  1. reverse1

{hello_world}中‘o’被0替换

  1. reverse2

{hacking_for_fun} i r被替换为1

  1. 内涵的软件

发现类似flag的字符串,用flag{}包住得到flag

  1. 新年快乐

upx

  1. Xor

对global再进行一次异或得到flag

Exp:

  1. reverse3

先对输入字符串base64编码,再字符串加密

过程反向即可得到flag

Exp:

  1. Hello world

Mainactivity类中

  1. 不一样的flag

上下左右4种操作,应该是迷宫题

字符串可以分为5行

*1111

01000

01010

00010

1111#

遇到1退出 遇到#正确提升

说明要从*沿0走到#

Flag为flag{222441144222}

  1. SimpleRev

先把text key分析出来

发现字符加密处理

关键判断,要得到flag就要通过密文及key反推

可以采用枚举法

Exp:

  1. [GXYCTF2019]luck_guy1

根据代码,推测先读入f2再处理f2最后拼接得到flag

f2 exp:

得到结果

  1. java逆向解密

关键加密

Exp:

  1. [BJDCTF2020]Justre

大括号内即为flag

  1. 刮开有奖

发现可疑字符串,找到关键函数

分析代码发现String数组应该是flag且长度为8

继续分析,sub_4010F0函数应该是处理上方10个字符

跟进sub_4010F0函数

分析一下应该是字符的加密,同时注意到这个函数的第一个参数为int a1,查看调用处发现是将数组首地址传入这个函数,那么类似a1+4*i的即可转换为a1[i],原理:

将其转换为c语言代码

继续向下分析,调用了sub_401000函数,跟进

看到调用了byte_407830函数,跟进

发现

推测是base64编码

根据判断推出flag

获取前两位exp:

  1. [ACTF新生赛]easyre1

upx脱壳

关键代码,遍历法得到flag

Exp:

  1. 简单的注册机

第一种方法:

分析java代码

找到修改flag值的smali代码

修改为const/4 v2,0x1

打包安装,随便输入得到flag

第二种方法

构造合适注册码

或者

直接计算flag的值

  1. [GWCTF 2019]Pyre

先把pyc反编译

分析知input1为flag,反向运算

Exp:

  1. Findit

方法类似16题

还有个方法

Frida通杀

注意到此类题往往将输入与密文使用equals比较,可以用frida通杀获取比较双方的值或者直接修改返回值为1

Exp:

  1. [ACTF新生赛2020]rome1

关键字符处理及判断

Exp:

  1. [FlareOn4]Login

分析js

Rot加密

解密得到flag

  1. Rsa

公匙获取n,e,计算私匙

解密即可

  1. [WUSTCTF2020]level1

Exp:

  1. [GUET-CTF2019]re1

关键判断,跟进sub_4009AE

一大串if,要返回1,即令条件不成立,分别求出各位

未给出第7个字符,只能猜或者burp爆破,得到a1[6]=’a’

得到flag

  1. CrackRTF

分析代码,发现密码两部分组成,先看第一部分

第一段输入应该是数字且大于100000

跟进sub40100A函数,继续跟进到sub_401230

看不懂。。。。在网上查了各个函数用法后发现是sha加密

0x8004u决定了加密方法

返回主函数

只能暴力破解了

Exp:

得到第一段flag

然后分析第二段

跟进sub_401019后发现是MD5加密

没有了第一段的条件不好暴力破解,继续往下分析,发现调用了sub_40100F函数

查询函数用法后

跟进sub_401005函数

第二个密码一共六位,观察rtf文件,发现前几位应该是文件标记位

取出前几位与AAA异或得到第二部分

Exp:

输入密码,发现多了个rtf文件,得到flag

  1. [WUSTCTF2020]level2

  1. [MRCTF2020]Traform

分析代码发现是一个简单的异或

Exp:

  1. [2019红帽杯]easyRE

入口是这里,调用了一个函数进去看看,看不懂,看下第一个参数,

感觉这里是关键

这里面对v17进行异或,v17字符串长度是36,所以推测sub_424BA0作用是取字符串长度

Exp:

得到

继续往下分析,发现base64,改下名

去看看off_6CC090

Base64解码10次得到个网址,进去一看发现被骗了,到这里就走不下去了,查了下才有了思路

发现下面还有个数据,交叉引用发现有两个引用进入一个

上面看不懂,猜测是随机生成的密码

根据这个猜测v4长度为4

根据这个判断条件,两个数组地址相差4,猜测这两个数组属于一个数组

直接导出

得到密码

把两个数组合并刚好长度是25

导出

Exp:

  1. [ACTF新生赛2020]Usualcrypto

对代码分析改下名

跟进crypt

跟进modifykey

这里合并了两个数组,

应该是base64加密,这个函数的作用就是修改密码表

根据这个得到修改后的码表

根据修改后的码表得到flag

  1. [SUCTF2019]signIn

看着像rsa,查了下api确实是rsa

直接解密得到flag

  1. [MRCTF2020]Xor

Exp:

31.[HDCTF2019]Maze

看题目应该是迷宫题

看下字符串

很可疑,估计就是他

看下入口

调用了main,跟进

看来flag是wasd的组合,就是解开迷宫

这个应该是终点

看下行列初始值

在第七列(应该是从0开始)第0行

迷宫,F为出口

32.[MRCTF2020]hello_world_go

main函数

VBS:

打开发现代码被转成一大堆ascii码,python转回来就行

两个加密,先凯撒解密再base64解码

直接让他自己吐出来,得到flag

Android_re:

分析java层,发现一个des加密,key和iv从native层获取

可以用frida直接hook,调用native方法获取key和iv

但是

只要主动调用就崩溃,看adb日志是传入了错误的字符(甚至在我的所有模拟器和一个真机中软件自己调用都会崩溃)

换个真机,发现hook调用还是崩溃,但是attach后竟然不崩溃了(神奇。。。)

得到key,iv

解密即可

还可以jeb动态调试

打断点

这是key

这是iv

Ascii码转成字符即可,解密获得

也可以直接用工具:

不过这个软件只要xp模块hook就一定会闪退,不hook第二次才会闪退(so里面有检测机制?但是在模拟器里面不使用xp模块hook也会触发同样报错)

还可以unidbg直接调用so中的函数得到key和iv

解密即可得到flag