这个题还是有点意思的 一开始我因为没有装vs库 然后一直没有办法运行 后来 我 安装之后 就开始调试了这道题 然后发现了
难道只是简单的base64的加密 ? 然后我测试了一组数据 发现了 不对 。。。。。。。 emmmm 这就让我很难受
这坑爹的题 难道让我自己看 是什么加密么 然后 突然发现了一个好玩的东西
这个就是我们输入的字符串经过base64加密后的密文 那么 后面比较的是什么 emmm 让我们继续分析
011957D9 8985 54FFFFFF mov dword ptr ss:[ebp-0xAC],eax
011957DF 8B85 54FFFFFF mov eax,dword ptr ss:[ebp-0xAC]
011957E5 3B85 60FFFFFF cmp eax,dword ptr ss:[ebp-0xA0]
011957EB 7D 23 jge short reverse_.01195810
011957ED 8B85 54FFFFFF mov eax,dword ptr ss:[ebp-0xAC]
011957F3 0FBE8C05 6CFFFF>movsx ecx,byte ptr ss:[ebp+eax-0x94] ; 取出加密后的密文、
011957FB 038D 54FFFFFF add ecx,dword ptr ss:[ebp-0xAC] ; 加上ss:ebp-0xac 但是ebp-0xac每次循环都会加1
01195801 8B95 54FFFFFF mov edx,dword ptr ss:[ebp-0xAC]
01195807 888C15 6CFFFFFF mov byte ptr ss:[ebp+edx-0x94],cl
0119580E ^ EB C0 jmp short reverse_.011957D0
01195810 8D85 6CFFFFFF lea eax,dword ptr ss:[ebp-0x94]
01195816 50 push eax
01195817 E8 ACB8FFFF call reverse_.011910C8
0119581C 83C4 04 add esp,0x4
0119581F 8BF4 mov esi,esp
01195821 50 push eax
01195822 68 34A01901 push reverse_.0119A034 ; e3nifIH9b_C@n@dH
01195827 8D8D 6CFFFFFF lea ecx,dword ptr ss:[ebp-0x94] ; 最后比较的是 上面那个字符串
0119582D 51 push ecx
0119582E FF15 84B11901 call dword ptr ds:[<&ucrtbased.strncmp>] ; ucrtbase.strncmp
01195834 83C4 0C add esp,0xC
这个自己在od里面观察一下就知道了 然后用python就可以解密了(也可以用php 自带baes64库的)
import base64
str="e3nifIH9b_C@n@dH"
flag=""
for i in range(len(str)):
flag+=chr(ord(str[i])-i)
flag=base64.b64decode(flag)
print(flag)
flag={i_l0ve_you}