2024 UMassCTF re 部分wp

Free Delivery

 

附件拖入jadx

程序看起来比较复杂,分析起来也不容易,最主要是没有验证部分,只是让找。跳过分析部分,说说怎么得到flag的。可以发现有native层函数

解包把so拖入ida

一个简单的异或。原来有两部分

题目描述中提到了网络和命令,第二部分在命令,那么第一部分应该在网络了。X0函数是base64解码函数

解码

调用了三次Q0函数,假设三次调用参数相同,那么前两次中a1函数的返回值应该等于第三次调用中的明文

一个异或。脚本

Fructose

 

附件拖入ida

 main函数不能反汇编,这里要知道retn等价于pop eip。先push了一个地址,再retn,就相当于jmp那个地址,只不过多加了一个入栈再出栈步骤。输入部分

ecx表明了输入长度,rdx即s1即输入字符串地址

r9是一个256的数组,输入作为索引取值

然后加上r8的地址作为偏移基址,即得到需要进行加法操作的次数

加法做完后,进行移位操作,再做加法,最后和r8数组做比较

jrcxz表明需要rcx为0

挺考验汇编、逻辑功底的。脚本

Maltodextrin

 

 

很抽象的题。附件用文本编辑器打开

看起来应该是汇编,但是网上没搜到相关的,有相似的,不知道到底是不是

先不管这些,随便翻一下,发现有两个寄存器r31和r55都指向result,可以理解为两个指针,指向数组中两个相邻的位置

可以发现有125即’}’,但是是负数

不管,先提出来再说。因为是两个指针,所以我分两段了,两段之间用三个B隔开了。当看到’{’的时候以为对了

没看到U,白高兴,继续看。诶,有xor,而且有负数,负负得正,而且左右括号的负数异或后刚好没变,很明显了

脚本。显式并行指令集运算Explicitly Parallel Instruction Computing,EPIC

Aspartame

 

该下载的下载,该安装的安装,该解压的解压。照提示运行

是个俄罗斯方块游戏,用CE找字符串没找到。附件拖入ida,拖到最底下,再稍微向上翻。那怎么找到这个的呢?是这样我用winhex查看,一直拖到最下面就发现了这个

查引用,v41应该就是消掉的行数,好像需要消掉69次后才会给flag

那对于我这样的手残,肯定是过不了的。转到汇编,对跳转地址查引用

根据逻辑,改成必定跳转该地址

反汇编界面看是这样就行了

保存然后重新运行

Magic Conch

附件拖入ida

 调试发现,附件解密数据段,生成了另一个程序

数据段很大,不存在静态解密的可能性,只能考虑dump内存

但是一开始被文件大小困住了,不知道应该什么时候截止。后面的题目做的差不多了,最后再看一眼这个题。突然发现,这里不是有个n嘛

写脚本dump

文件拖入ida

看thread_start

原文不一样,经过HASH后要一样,明显的hash碰撞,看看hash函数

SHA256函数是真的SHA256函数,Xor是自定义函数。那只需要每次输入的字符全相等就行了,至于长度,应该是32个字符,因为传入HASH函数时,参数为int64* a1,而且读取到了a1[3],即数组a1长度为4,元素大小为8byte,所以一共是32byte

结语

剩了两个图灵机没做,因为之前没接触过,与其绞尽脑汁做一个不一定能做出来的题目,不如睡大觉。难题天天有,谁知道以后会不会遇到简单点的类似的题目,到时候再入门也不迟。从难题入门太难了,头发都不够掉的

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值