type
status
date
slug
summary
tags
category
icon
password

easyre

一、分析

notion image
有用的伪代码就这一段
看得出来关键加密就是for循环里的异或加密

分析这一段加密

简化一下就是:
  • 前41位,input的前一位xor后一位
  • input[41] ^= input[0]
  • input[42] ^= input[1]

二、确定cipher

根据这个if语句中的条件,确定来确定cipher

解释

  • _mm_loadu_si128(input): 这是一个 SSE 指令,表示从 input 地址处加载一个 128 位(16 字节)的未对齐数据到一个 SSE 寄存器中
  • _mm_cmpeq_epi8(_mm_loadu_si128(input), data1): 这是一个字节级的比较指令,比较 _mm_loadu_si128(input) 中的每个字节和 data1 中的每个字节;结果是每个字节比较的结果:如果某个字节相等,则对应的结果字节为 0xFF(即全1),否则为 0x00(全0)
  • _mm_and_si128(...):这是一个按位与操作,对前两个比较结果的每个字节进行按位与运算。相当于都为 0xFF(全1,表示相等)时,结果字节才为 0xFF;否则结果字节为 0x00
  • _mm_movemask_epi8(...):这是将每个字节的最高位(即第8位)提取出来,形成一个 16 位的整数;若某个字节的最高位是1(即该字节为 0xFF),则对应的位为1;否则为0
  • 最后结果要 ==0xFFFF ,相当于全为1
换言之,取input的32位进行对比,相同则正确,根据data2可以确定校验的后16位在data1中的位置,往前推16位即是校验的前16位
因此,正确的cipher为剩下的data1
notion image

三、解题

根据以上分析,可以将整个题简化为一个异或加密,结果与cipher对比
直接写个正面爆破即可完成:
exp
 
 

tmaze

根据题目猜测它是T型迷宫
结果上网搜全是动物实验= =,利用上网找图的思路

一、分析

DIE查询可知是64位程序,进入ida分析 →
notion image
初始并没有发现有什么引导输入的伪代码,开调!

1.1 传参方式及输入字符

if(v5 == 43)处下断点,调试可以发现终端并未让输入
这里可以确定程序是命令行传参
notion image
在此输入再进行调试即可
notion image
在下面的switch-case逻辑中,可以看出要求输入字符xyz

1.2 确定输入长度

notion image
可以看出v4是输入的path
分析这一段,do-while循环是在统计输入的字符串长度,检索到0结束
可以确定path的长度为42

1.3 调试switch之前的逻辑

这个语句,unk_7FF7D50D7000中是若干1和0组成的数组,猜测是构成迷宫的参数,dword_7FF7D50D7FA0是固定参数10
sub_7FF7D50A1230里是复杂的迷宫生成函数,对我来说难以分析我就先没管
notion image
调试可以知道,data0、data1、data2分别存储了一个地址
  • data0:1DDFFDACD70h
  • data1:1DDFFDAEA60h
  • data2:1DDFFDAEE20h

1.4 调试switch之后的逻辑

根据最后的if判断语句和switch逻辑,可以知道data1指向的地址是会发生变化的
v7的地址就是data2存的地址
那么,可以分析出来,data1其实就是当前操作对应地址,最开始的的data1就是start_locdata2就是最后的地址end_loc
再但拿一个case来分析:
  • 都是对地址操作,v15就是now_loc,v19存储的是*(now_loc + 16)这个地址的值,而这个值恰好又是一个地址,可以说v19 是 next
  • 要满足不去执行goto的操作,需要让if里的条件为,满足:next ≠ 0、*(now_loc + 26) = 0
分析完可以得到:
notion image

二、解题

根据输入全跟地址相关,以及地址操作全在下半段
就可以考虑不管上半迷宫生成的逻辑
我们可以把1.3分析的内容全部理解为:获得start_locend_loc

2.1 解题思路

idapython,把start_locend_loc的内容当作迷宫,根据switch-case的限制逻辑,利用深度搜索算法来输出符合条件的xyz,即path

2.2 EXP

用递归算法实现深度搜索
记录已经访问过的地址(相当于迷宫中已经走过的坐标)为all_visited_loc,来实现减少搜索量
notion image

2.3 验证

notion image
 
 

xiran_encrypto

Tips: xiran_encrypto是恶意样本分析,本质是从cha文件里解出一个数据流,clickme文件是chacha20对flag.png文件进行加密。对本人来说太难了,分析不出来QAQ,后续若能理解再来分享。
ByteCTF2024记一次PVZ杂交版patch
Loading...
Sh4d0w
Sh4d0w
漫长学习路ing
最新发布
360加固复现学习
2025-6-15
java反射机制
2025-6-14
classLoader机制
2025-6-14
dex文件结构
2025-6-14
APP启动流程
2025-6-14
JNI学习
2025-6-14
公告
Welcome to Sh4dw’s blog!
敬请指导,Q 467194403