【实战】文件加密器举行逆向

打印 上一主题 下一主题

主题 829|帖子 829|积分 2487

前言
实战可以大大提高自己,学习技能的目标就是可以或许在实战中运用。
本次实战与实际息息相关,该软件具有加密某文件的功能。

界面还挺好看的,功能很简朴,输入文件和PIN(4位)进加解密。
这是被加密的文件

需要将其举行解密,拿到flag
思绪
因为PIN是4位,因此可以写一个python脚本,对其举行爆破。
关键在于得出加密的算法,此时就需要我们举行逆向分析了
分析
先尝试举行加密

根据关键词:encrypted 举行定位
[img=720,695.786350148368]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408011449879.png[/img]

发现是我们需要的信息
[img=720,140.53310404127257]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408011449880.png[/img]

跟踪进去,发现了花指令
[img=720,409.9233449477352]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408011449881.png[/img]

去花指令
[img=720,108.74296435272045]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408011449882.png[/img]

发现堆栈不均衡,将所有代码选中,然后C键,重新分析
发现了单指令花指令,无非nop掉即可
[img=720,144.587]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408011449884.png[/img]

从头选到下一个函数开始的位置
[img=720,352.8598848368522]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408011449885.png[/img]

按下C键
[img=720,161.2041392285983]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408011449886.png[/img]

analyze即可
还是rust编译的
[img=720,46.31921824104234]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408011449887.png[/img]

此时就可以分析函数了。处理其他函数也是相同的道理
【----资助网安学习,以下所有学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】
 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析陈诉
 ④ 150+网安攻防实战技能电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)
初步分析
[img=720,393.11392405063293]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408011449888.png[/img]

[img=720,410.76258992805754]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408011449889.png[/img]

使用Fincrypto发现了salsa20加密
salsa20:32位字符构成的key,二是随机天生的8位nonce。算法使用key和nonce天生一个2^70长度的序列,并与明文举行异或加密
sub_140073A70
[img=720,440.9841827768014]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408011449890.png[/img]

发现main_func就是获取我们的输入的文件内容
sub_140039890
而函数sub_140039890才是关键的加密函数
[img=720,283.1012658227848]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408011449891.png[/img]

0x61707865、0x3320646E均为Salsa20算法的固定参数
[img=720,591.1780336581045]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408011449892.png[/img]

解密
由于密码只有0000~9999这10000种大概
加密后文件名又是flag.png.enc,所以原文件是个png文件
使用png固有文件头89504E47来判定解密是否成功
  1.  Python
  2.  
  3.  from Cryptodome.Cipher import Salsa20
  4.  
  5.  cipher = open("flag.png.enc", "rb").read()
  6.  for i in range(10000):
  7.  key = str(i).rjust(4, '0').ljust(32, 'x00')
  8.  nonce = b'x24x24x24x24x24x24x24x24'
  9.  sal = Salsa20.new(key=key, nonce=nonce)
  10.  plain = sal.decrypt(cipher)
  11.  if plain.find(b"x89x50x4Ex47")>=0:
  12.  open("flag.png", "wb").write(plain)
  13.  break
复制代码
更多网安技能的在线实操练习,请点击这里>>
  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

魏晓东

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表