[安洵杯 2019]crackMe

大佬wp:

[安洵杯 2019]crackMe - Moominn - 博客园 (cnblogs.com)

 首先肯定是运行

(运行这个耗费了我好久,一直说我缺失什么文件,我giao,最后是问学长要的dll文件)

输入类型,然后提醒我hook

没搞懂,先分析吧

F12找到right,reverse--从结果来推

cmp

str2= 1UTAOIkpyOSWGv/mOYFY4R!!

上调找到这里

再换表

对base64的表进行了移位处理

这里我也没看懂,看wp才知道,这里是说对不足的补全为!(之前是补全为=)

输入字符两两swap

SM4

base64表大小写转换

 这是我们逆向推出来的流程

我们现在重新来理一下

首先是base64被换表了----输入字符移动----输入字符swap---SM4加密---base64表大小写转换---base64加密为str2

import base64
ans1='1UTAOIkpyOSWGv/mOYFY4R!!'
ans=''
for i in range(0,len(ans1),2):
    ans+=ans1[i+1]
    ans+=ans1[i]#这里先把最后一步的字符转换给完成了
table='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
#大小写转换
new_table=''
for i in table:
    tmp=ord(i)
    if 97 <= tmp <= 122:
        new_table += chr(tmp - 32)
    elif 65 <= tmp <= 90:
        new_table += chr(tmp + 32)
    else:
        new_table+=chr(tmp)
print(new_table)
renew_table=''
renew_table=new_table[24:]+new_table[:24]
print(renew_table)
#得到新表
arr=[]
for i in range(len(ans)-2):
    arr.append(renew_table.find(ans[i]))#这一步要了解base64具体过程,这是找到在base表里面的对应下标,即明文的前三位数字
enc=''
for i in arr:
    enc+=table[i]#这里又回到正常的base64,因为这里!!不好操作,我们换回原来的base64加上==,这样方便操作
enc+='=='
print(enc)
tes=base64.b64decode(enc)
print(list(map(hex,tes)))#记住吧,我也不会,哈哈
a=['0x59', '0xd0', '0x95', '0x29', '0xd', '0xf2', '0x40', '0x6', '0x14', '0xf4', '0x8d', '0x27', '0x69', '0x6', '0x87', '0x4e']
for i in a:
    print(hex(int(i,16)),end=',')
key='where_are_u_now?'
#剩下交给厨子了,sm4加解密我是真的不是很了解

 SM4foRExcepioN?!

至于讲的什么VSH,SEH,UEH,我感觉不出来,哈哈,应该是太菜了

我就慢慢回调就写完了

[安洵杯 2019]crackMe-优快云博客

这篇博客有个这个图

 我也理解不到,记住吧

下一题!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

name_name123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值