当前位置: 首页 > news >正文

BaseCTF WEEK1 re复现-入土为安的第24天

基础:

f5:反编译,f12:查看字符串,Ctrl+x交叉引用,shirt+e提取,f2:下断点,f9:调试,Ctrl+f:查找函数/字符串,

You are good at ida

签到题:查壳,发现无壳,且为64位

可以看出flag第一部分是Y0u_4Re_

提示你点f12,查看字符串

点击第三行,并Ctrl+X,交叉引用

提取出来:900d_47_

The last part is in a named Interesting,最后一部分在Interesting函数

最后一部分:id4

flag:BaseCTF{Y0u_4Re_900d_47_id4}

UPX mini

前面重复的查壳(不放图了)

发现有upx,就解壳,cmd 再输命令,upx.exe -d a.exe(这个是最简单的查壳,比这个难的是修改特征值查壳,更难的是手动去壳(我还没写过不嘻嘻))

发现这就是简单的Base64加密

ez_maze

h和r转化的16进制ascii码之类

++v9:往后一位

v9+=15:往下一行....d:右w:上s:下a:左

shift+12

shirt+e

总共是225个数据

# 原始数据
data = [3, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 1, 1, 1, 1, 1,1, 0, 0, 0, 0, 0, 0, 0, 0, 0,1, 0, 1, 0, 0, 1, 0, 0, 1, 1,1, 1, 1, 0, 0, 1, 0, 1, 0, 0,0, 1, 1, 0, 0, 0, 0, 1, 0, 0,1, 0, 0, 0, 1, 1, 1, 0, 0, 0,0, 0, 1, 0, 0, 1, 0, 0, 0, 1,0, 1, 1, 0, 1, 0, 0, 0, 0, 0,1, 0, 0, 0, 1, 0, 1, 0, 0, 1,1, 1, 0, 0, 0, 1, 1, 1, 1, 1,0, 1, 1, 1, 1, 0, 1, 0, 0, 0,0, 0, 0, 0, 0, 0, 1, 1, 1, 1,1, 1, 0, 0, 0, 0, 0, 0, 0, 0,0, 1, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 1, 1, 1, 1, 0, 0, 1,1, 1, 0, 0, 0, 0, 0, 0, 1, 1,1, 1, 1, 1, 1, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 1,0, 0, 1, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 1, 0, 1, 0, 0, 0,0, 0, 0, 0, 0, 0, 1, 1, 1, 1,1, 1, 1, 1, 4,
]# 转换为15x15的二维数组
array_15x15 = []
for i in range(15):row = data[i*15:(i+1)*15]array_15x15.append(row)# 输出结果for row in array_15x15:print(row)//
3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0
1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0
1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0
1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0
1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0
1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0
0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 4

sssssssddddwwwddsssssssdddsssddddd     

MD5:http://md5.gezhisen.com/

BaseCTF{131b7d6e60e8a34cb01801ae8de07efe}

BasePlus

密文:lvfzBiZiOw7<lhF8dDOfEbmI]i@bdcZfEc^z>aD!

Encode(v5, Str1)加密函数

base64:/128GhIoPQROSTeUbADfgHijKLM+n0pFWXY456xyzB7=39VaqrstJklmNuZvwcdEC

(说实话没见过)

变形异或

(a2 + v8) = v4[v8] ^ 0xE

Ez Xor

f5看主函数的反编译

密文为:Str,v11,v12,"@;%,其中Str,v11,v12涉及到大小端序,怎么解决,举个例子Str = 0x1D0B2D2625050901i64,转化一下就是:0x01,0x09,0x05,0x25,0x26,0x2D,0x0B,0x1D,从后往前,俩俩一组

加密过程为:KeyStream函数和encrypt函数

v4 = 0x726F58为key

点着函数右键,可以改函数类型,int改成char,也可以改参数名字

逆向出来exp:

def key_stream(key):key_box = []for i in range(28):  # 确保密钥流长度为 30key_box.append(key[i % 3] ^ i)  # 使用 i % 4 避免超出索引return key_boxdef decrypt(enc, key):flag = ""key = key[::-1]  # 反转密钥流for i in range(len(enc)):flag += chr(enc[i] ^ key[i])return flag# 用列表 a 替换 enc1, enc2, enc3, enc4
a = [0x01, 0x09, 0x05, 0x25, 0x26, 0x2D, 0x0B, 0x1D, 0x24, 0x7A, 0x31, 0x20, 0x1E, 0x49, 0x3D, 0x67, 0x4D, 0x50, 0x08, 0x25, 0x2E, 0x6E, 0x05, 0x34, 0x22, 0x40, 0x3B, 0x25]
enc = bytes(a)  # 将列表 a 转换为字节流print("Encrypted data (enc):", enc)# 使用字节序列 58 6F 72 00 作为密钥
key = bytes([0x58, 0x6F, 0x72])
key_box = key_stream(key)
print("Key stream (key_box):", key_box)# 解密数据
flag = decrypt(enc, key_box)
print("Decrypted flag:", flag)
//BaseCTF{X0R_I5_345Y_F0r_y0U}


http://www.mrgr.cn/news/5504.html

相关文章:

  • halcon1
  • [Linux#40][线程] 线程控制 | 多线程
  • 设计模式六大原则:迪米特法则详细说明和案例示范
  • windows docker 执行apt-get 权限问题
  • 大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例
  • Vue3 provide(父) + inject(子、子的子...)进行值的传递及显示
  • iOS 开发:Object-C 和 Swift 的区别 (AI问答)
  • 三种方法加密图纸!2024如何对CAD图纸进行加密?分享给你
  • 回归预测|基于NGO-TCN-BiGRU-Attention的数据预测Matlab程序 多特征输入单输出 含基础模型
  • 知识竞赛答题设备及答题方式有哪些
  • 学习记录第二十八天
  • langchian 批次调用 prompt
  • python 面试指南
  • 何为数据专线和互联网专线?两者有什么区别?
  • 【算法基础实验】图论-最小生成树Kruskal实现
  • QT中通过TCP协议多线程的文件传输(客户端)
  • 【架构设计】-- aarch(ARM) and X86
  • [Meachines] [Easy] Active SMB未授权访问+GPP凭证泄露破解+Kerberos-管理员TGS票据破解
  • Django 后端架构开发:高效日志规范与实践
  • 20 Tkinter Spinbox 组件