MTCTF2022-small&DAS9-landing

这个周末参加了一下美团高校CTF 和 DAS九月赛,也没做出来什么,tcltcl

美团 small

到手是个很小的elf,之前一直以为它加壳了,研究怎么dump,后来发现方向全错了,确实是很小的程序。。不过要直接看汇编
在这里插入图片描述我太菜了,意识还是不够,看了好久都没看出来是TEA
Delta 是0x67452301,key是#, g, E,0x23=35轮
在这里插入图片描述获得加密数据(截图不全:
在这里插入图片描述然后写个TEA的脚本逆回去就行

DAS landing

首先查看input something的位置找到程序入口,只有一个异或,f5看不出什么,点开func1,一个简单base64,看后面的意思应该是假的,不管。
在这里插入图片描述在这里插入图片描述

再次查看string窗口,找到“Good…please packed the flag…”,应该是真flag的位置,倒着往回看,这才是真正的加密部分:
在这里插入图片描述前面可以看到载入的一大串字符,从汇编可以看出,先异或0x12再进入这个nothing函数:
在这里插入图片描述点进nothing函数爆红,在call爆红的那句指令处按U, undefine即可恢复正常汇编
在这里插入图片描述进去看就是base64,不过有点小陷阱就是base64转换后后移了一位:哦除了等号不变
在这里插入图片描述理清思路以后就可以往回逆了,提取那串字符,异或0x12,每一位前移一位ascii码然后解base 64,不过还没完,现在回到input处看它的第一步操作,异或0x22然后自增1(比赛的时候没注意到自增1没做出来,属于是瞎了),脚本如下:

import base64

n =[0x47, 0x55, 0x77, 0x5C, 0x44,
  0x7E, 0x55, 0x48, 0x47, 0x23,
  0x6B, 0x59, 0x47, 0x7E, 0x7F,
  0x42, 0x41, 0x23, 0x7B, 0x51,
  0x4A, 0x54, 0x28, 0x5C, 0x41,
  0x20, 0x7B, 0x42, 0x47, 0x7E,
  0x24, 0x42, 0x47, 0x7E, 0x24,
  0x42, 0x47, 0x7A, 0x2F, 0x2F]

f = ''
for i in n:
    f += chr((i ^ 0x12)-1)
f = f[:-2] + '=='
f = base64.b64decode(f)
k = ''
for i in f:
    k += chr((ord(i)-1) ^ 0x22)
print(k)
# DASCTF{itisbulijojodebuliduoooooooo}

在主函数中看不到真正加密部分的反汇编,而且由于这个catch机制,没法动态调试到主加密部分,不过可以用patcher
在这里插入图片描述
挑一个jmp指令,patch成直接跳转到主加密部分开始的地址

在这里插入图片描述即可看到全部正常的主函数:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值