首页
社区
课程
招聘
[原创]KCTF2022秋季赛签到题
2022-11-26 21:35 6929

[原创]KCTF2022秋季赛签到题

2022-11-26 21:35
6929

使用x64dbg进行动态调试分析,根据前期运行可知会返回success或者fail字符串,于是搜索字符串,定位到程序的核心位置如下图:
图片描述
可以发现,程序中预先给了两个字符串,其中字符串 1841352 在后面回合用户输入的username进行拼接,比如 1841352KCTF,然后对这个拼接后的字符串计算md5值。这个md5码值记为md5_code

 

另外一个字符串4fc0296a51e6d90c794c91951886dc2b则是一个程序预设的字符串,用于后续的计算和比较,将其记为formal_code
分析循环可知,用户输入的注册码必须长度为32,接着计算公式是这样的:
tmp = ((ord(formal_code[i]) + i ) % 32 + i) % 32 - i(其中i为从0到31的计数器)

 

得到这个tmp后,程序的比较部分就是取出md5_codetmp位置的值,与用户输入的注册码的第i位进行比较,如果相同则循环继续,进一步比较下一位,如果不相同则会调用fail的函数。

 

那么就先计算1841352KCTF的md5值为9b0c4341d546c9c7f15d2f15f973aaab,再编写简单脚本如下图:
图片描述
最后结果为:
图片描述
填入程序中,返回success,逆向成功。


[培训]《安卓高级研修班(网课)》月薪三万计划

收藏
点赞2
打赏
分享
最新回复 (1)
雪    币: 247
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Hirams 2023-3-21 21:43
2
0
游客
登录 | 注册 方可回帖
返回