逆向flag0073详解


1. 从靶机服务器的FTP上下载flag0073,分析该文件,请提交正确flag的长度。提交格式:XXXX。

进到main函数
在这里插入图片描述
可以看到输入不等于38个,就会跳转到wrong flag,所以正确flag的长度为38个

2. 提交程序所使用的算法的名称。提交格式: 0xXXXX。

md5,第五题有讲怎么知道是md5

3. 提交flag正确时的输出。提交格式: 0xXX。

shift+f12可以看到well done!
在这里插入图片描述

4. 请用程序所使用的算法计算112233的值,并提交其结果。提交格式: XXXX。

用md5sum计算112233的值即可

5. 提交flag的值。提交格式:XXXX。

在主函数里sub_40182f函数对sub_401864进行了加密操作,长度为0x1061也就是4193
在这里插入图片描述
密钥为0x11
在这里插入图片描述
可以通过idc脚本进行解密
在这里插入图片描述
解密后我们可以看到多了一段汇编语言
在这里插入图片描述
我们可以看到汇编语言当中,还call了一次sub_40182f函数来进行解密,而参数是word_40157A的地址以及0x2B5的长度
所以我们解密完第一个函数后,先在函数入口用U转换为数据段,然后再用C转换为汇编,要注意i下面还有一大串的数据段也要用C来转换成汇编代码,然后再在入口按P定义为函数
在这里插入图片描述
sub401864函数解密成功,但此时我们并不能反编译40157A我们之前看到汇编里还call了一次解密函数来对word_40157A进行解密,所以我们再次使用IDC脚本以0x40157A作为地址,然后进行解密
在这里插入图片描述
再通过上述 同样的操作转换为函数后就可以进行正常反编译了,点进sub40157A函数,可以看到开头就有四个值

在这里插入图片描述
这个就是md5算法的特征,所以第三题是md5
而我们看到代码上面有一大串的md5值,众所周知,md5不可逆,只能通过碰撞来解密,那我们在省赛kali下该怎么解这个东西呢?答案是用python3 的hashlib模块加密一个flag的可能组成列表来与里面的md5的值进行碰撞,我们可以将小写a-z和大写a-z以及花括号和0123456789都写进一个字符串里,然后将字符串用hashlib来进行md5加密,加密后再与程序里的md5值一一碰撞。
在这里插入图片描述
写出脚本进行解密,hashlist即程序里的那一大串md5值,而list即为我们a-z A-Z 0-9 {} _组成的hash列表,通过两边的值来进行碰撞,确定这些md5原本的值即可,运行脚本即可得到flag

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值