[Zer0pts2020]easy strcmp
[Zer0pts2020]easy strcmp
die查壳
找到加密函数
如何找到加密函数的
找到init函数,跟进funcs_889
、跟进
使用x交叉引用qword_201090
即可找到主加密函数
那这个加密函数是如何连上main函数的呢?
main
main函数这里运用了strcmp,但我们却找不到strcmp到底对比了什么
但根据我们刚刚的分析,即可知道 qword_201090是连上strcmp的地址的,然后通过加密函数返回加密值,也就是上面图sub_6EA返回的a1
这下逻辑明了了
主要是使用main函数中的加密字符串与qword_201060进行相加,注意这里是八个字节 直接相加
编写解密函数
from binascii import *
enc = [0x410A4335494A0942, 0x0B0EF2F50BE619F0, 0x4F0A3A064A35282B]
key = '********CENSORED********'
flag = b''
for i in range(len(enc)):
tmp1 = b2a_hex(key[8*i:(8*i)+8][::-1].encode())
tmp2 = a2b_hex((hex(int(tmp1,16) + enc[i])[2:]))[::-1]
flag += tmp2
print(flag)
注意这里是对qword直接进行操作,因此如果把qword拆分成byte然后进行运算就会出现变量溢出(溢出0xff)的情况,如果是对qword进行整体的操作,就会将溢出移到下一位,不会丢失数据
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步