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

[ACTF新生赛2020]usualCrypt 1 wp

image

无壳
IDA分析
image

发现base64加密字符串
image

发现标准base64字母表
尝试能否直接解码
image

发现是不可见字符,所以base64标准字母表被改变了
寻找调用它的函数
image

发现改变标准base64字母表的逻辑
image

写一个py代码来获取改变后的base64字母表
aAbcdefghijklmn = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
a = list(aAbcdefghijklmn)
for n6 in range(6, 15):
v1 = a[n6 + 10]
a[n6 + 10] = a[n6]
a[n6] = v1
aAbcdefghijklmn = ''.join(a)
print(aAbcdefghijklmn)
得到需要的字母表为:
ABCDEFQRSTUVWXYPGHIJKLMNOZabcdefghijklmnopqrstuvwxyz0123456789+/
解密发现依旧是不可见字符
所以还需要其他的函数
image

可以看出sub_403CF8是自定义的输出函数
所以sub_401080就只能是关于base64编码的函数,点开看看
image

发现前面都是正常的base64解加密的代码,发现最后面的一个可疑的sub_401030函数打开看看
image

可以看出其对加密的内容进行了大小写置换
所以py代码加上对加密字符串的大小写置换再解密即可得到flag
bbb = 'zMXHz3TIgnxLxJhFAdtZn2fFk3lYCrtPC2l9'
b = list(bbb)
for i in range(len(b)):
if 'a' <= b[i] <= 'z':
b[i] = chr(ord(b[i]) - 32)
elif 'A' <= b[i] <= 'Z':
b[i] = chr(ord(b[i]) + 32)
bbb = ''.join(b)
print(bbb)

image

完整py代码为:
aAbcdefghijklmn = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
a = list(aAbcdefghijklmn)
for n6 in range(6, 15):
v1 = a[n6 + 10]
a[n6 + 10] = a[n6]
a[n6] = v1
aAbcdefghijklmn = ''.join(a)
print(aAbcdefghijklmn)

bbb = 'zMXHz3TIgnxLxJhFAdtZn2fFk3lYCrtPC2l9'
b = list(bbb)
for i in range(len(b)):
if 'a' <= b[i] <= 'z':
b[i] = chr(ord(b[i]) - 32)
elif 'A' <= b[i] <= 'Z':
b[i] = chr(ord(b[i]) + 32)
bbb = ''.join(b)
print(bbb)

http://www.jsqmd.com/news/656888/

相关文章:

  • 中小制造企业突围:一个五金加工厂的翻身案例-佛山鼎策创局破局增长咨询
  • 别再被‘反卷积’忽悠了!PyTorch转置卷积的‘错位扫描’与‘内部Padding’保姆级图解
  • 新手上路:用Python+Requests快速验证电商API(登录、购物车、支付三连测)
  • HOJ系统部署避坑指南:从Nacos配置到GoJudge判题机完整流程
  • 联想 / 拯救者 /moto 手机全机型通用|官方操作指导视频合集,新手老手都适用
  • K8s压力测试实战:从HPA动态扩缩容到资源优化
  • 终极指南:使用ROFL-Player免费播放英雄联盟回放文件的完整解决方案
  • 5分钟掌握:这款开源Chrome扩展如何帮你轻松下载网页视频?
  • 用ESP32和微信小程序DIY一个智能花房监控器(附OneNET平台配置全流程)
  • 10 分钟把 Hermes 接入 Telegram:Gateway 实战指南
  • Android Camera2录像实战:从MediaRecorder配置到视频保存到相册的完整避坑指南
  • DEDECMS与帝国CMS深度对比
  • 从Fluent残差图看网格质量:如何解读震荡、发散背后的网格‘凶手’
  • Llama Factory新手指南:如何选择模型、准备数据并训练你的第一个AI
  • FastAdmin后台配置分组实战:从添加分组到前端调用的完整流程(附代码)
  • 深度拆解RK3588显示子系统:从uboot报错到内核logo加载失败的全链路分析
  • rk3568 Android 11.0 从F2FS迁移到EXT4:优化数据擦除与掉电保护
  • Windows系统优化的终极神器:WinUtil完全指南
  • 想学斯坦福CS231A计算机视觉?先看看这份保姆级的Python与数学基础自查清单
  • MATLAB Simulink搭建电动汽车整车七自由度模型及模糊控制算法与轮胎模型研究
  • 3个核心功能揭秘:如何用AI智能移除图像中的任何对象
  • 为什么你需要永久保存微信聊天记录:数字记忆的终极守护方案
  • 实战演练:从双线程到三线程的并行累加重构
  • 长芯微LPS6288完全P2P替代TPS61288,是一款具有 15A 开关电流的全集成同步升压转换器
  • 别再傻傻用mutex了!C++11 std::atomic原子变量实战,性能提升看得见
  • 从电流采样到SVPWM:手把手解析PMSM有感FOC的闭环实现
  • Beego ORM避坑指南:从数据库设计到高效查询
  • 2026年主流安卓加固平台效果与价格横评:谁才是性价比之王?
  • 从原理到实践:MATLAB仿真线性调频信号的脉冲压缩全流程
  • 大模型在天文科研中的应用:天体数据分析