type
status
date
slug
summary
tags
category
icon
password
记录一下今年8月份-9月份打的KCTF(WP还没写完,最近事情太多了)
📝 Reverse
第二题 星际生物
附件
逆向分析
.NET逆向

以下为main函数

sudoku为需要解决的问题
在十六进制编辑器中显示初始值


把数据提取出来和程序结合发现是数独游戏

利用在线网站求解数独

后面还有一个迷宫问题,+为可走,从!走到(0,2)的地方

结合起来就是34689155813271746868579324125982187492581517263447389126SDSDDWWA
然后包上flag{}

第三题 绝境逢生
附件
VMP,还没弄过🥴🥴🥴🥴🥴,这个目前真的无能为力了,可以看下面三个师傅的write up
第四题 神秘信号
附件
Python逆向,这道题挺有意思的
第六题 异星文明
第七题 星际移民
附件
题目给了公开用户名和序列号

我们可以看一下题目规则

我们要求“KCTF”所对应的序列号
逆向分析
main函数的逻辑很简单,我们分别输入用户名和序列号,然后encode函数的参数为main函数

进入encode函数,这一步就是sub_40100的机器码和加密函数的机器码进行异或

这里的加密,可以根据运行的先后进行调整

结合后面的加密,我们可以写成python的形式


以下的2 * (xor_data & 0xF) 把bytecode分成了三部分从(2 * (xor_data & 0xF),2 * (xor_data & 0xF)+23)这部分用于后面的cmp,前后两段分别与main_code进行比较
这里是提取了23个字节,从encode_code里面提取,然后进行循环右移

最后和”KCTF-2024-CRACK-SUCCESS”比较

小坑
如果选手在不动调试器的断点原理的时候就会触发反调试,尽管我们输入的是出题人给的数据也会退出.
这里的断点简单来说,假如我们断点在某处

这处指令的第一个机器码就会变成0xCC,而他原本的机器码会存在某一个寄存器中,这就导致我们的encode_byte和main_code就会出现某些机器码变成0xCC.
EXP

第九题 第一次接触
附件
main函数的逻辑

首先确定输入的字符串的范围为a-z,0-9,并且字符串的长度还必须是3的倍数
这里进行调试之后发现是将字符串分成了三部分,然后if里面的三个函数分别是验证函数

第一个验证函数,验证8个字节是不是hellocat,这里其实有一个误区,它是比较了8个字符但是不一定就只有8个字符

第二个验证函数很显然每个字符都是数字字符, j_unknown_libname_84的作用是转化为数字并且取反,要求每个数字加起来为0xD,这里有个反调试当进行调试的时候dword_531008为2,但其实
dword_531008为3

得出来第二个应该是20211205

第三个验证函数
但这里其实个误区,假如你输入8个字符,dword_531E9C为0,下面的这些条件都不符合
这里可以推出这里的字符串的长度为9,即最后一个字符为9,sub_458232函数验证前八个字符,每两个字符为一对,每一对的第一个字符为a-d,第二个字符为1-4.但是看赛题结束后看别的师傅的WP好像这是个三皇后问题,我也不懂国际象棋.

这个时候我们可以退回第二步验证,第二步的字符应该是020211205
由于最后就是进行MD5验证,所以我们可以进行爆破处理.
EXP


第十题 试探
🤗 总结归纳
总结文章的内容
📎 参考文章
- 一些引用
- 引用文章
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
- Author:5m10v3
- URL:https://5m10v3.top/article/4b349400-b169-46b0-a432-21b1779a69da
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts