首页
社区
课程
招聘
[原创]CTF简单算法反解
发表于: 2023-7-6 19:34 16417

[原创]CTF简单算法反解

2023-7-6 19:34
16417

一个旧的Android CTF,主要分析一下反解算法是怎么写的
题目界面

jadx打开入口点

先分析下chek()是怎么实现的,等下再去看native层。

图片描述
这段代码的主要作用是从数据库中取出secret值(用hello的MD5值作为name对应的secret值)与我们输入的值(经过getSecret()方法处理)进行比较相等就返回true。
图片描述
分析完check()方法之后,现在我们可知:

那接下来我们去分析一下getSecret()这个方法。

用ida打开so文件之后,通过命名惯例用java定位到函数位置,再按F5修改以下参数类型方便分析
图片描述
先初步分析这段代码来猜测里面的逻辑(因为不知道参数的内容,所以猜测不一定正确)我们依旧可以知道几点

图片描述
图片描述

在函数开始的地方下断点,在手机上点击_TRY IT!_按钮之后我们可以中断在这里,这时候我们可以看到它的base_string字符串
_F8_继续往下跟,到获取dest[]的地方
图片描述
图片描述
分析后可以发现数组的内容是从0~0x44的dw数组。

最后一个循环
图片描述

图片描述

接下来我们就可以写这个算法的反解脚本了,写反解脚本可以从最后一个循环往前推过去。
结果字符串循环对字符进行与运算,然后再取模128确保结果不大于ASCII码的最大值->然后将计算完成的字符逐个在base_string里面找到字符对应的索引值(即dest[k]的值)->如果这个索引值小于16(dest[]中的最小值0x10)表示它对应的索引值在base_string的前16位->就把下标值加上base_string的长度->最后打印字符的时候还要把索引值([dest[i]])减去0x10

图片描述
over~

static_str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!{|}~'
now = 'kEvKc|roAkNADgGExUeq'
for i, each in enumerate(now):
    tmp = chr((ord(each)^i)%128)
    index = static_str.find(tmp)
    if index < 16:
        index = index + len(static_str) # 如果index < 16,给index加上字符集长度实现循环查找
    print(static_str[index-16], end='')
static_str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!{|}~'
now = 'kEvKc|roAkNADgGExUeq'
for i, each in enumerate(now):
    tmp = chr((ord(each)^i)%128)
    index = static_str.find(tmp)
    if index < 16:
        index = index + len(static_str) # 如果index < 16,给index加上字符集长度实现循环查找
    print(static_str[index-16], end='')
1
2
3
4
5
6
7
8
static_str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!{|}~'
now = 'kEvKc|roAkNADgGExUeq'
for i, each in enumerate(now):
    tmp = chr((ord(each)^i)%128)
    index = static_str.find(tmp)
    if index < 16:
        index = index + len(static_str) # 如果index < 16,给index加上字符集长度实现循环查找
    print(static_str[index-16], end='')

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 2
支持
分享
最新回复 (2)
雪    币: 3004
活跃值: (30866)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2023-7-7 09:37
0
雪    币: 548
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2023-7-9 09:21
0
游客
登录 | 注册 方可回帖
返回
//