ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

7.1-7.3

2022-07-01 16:07:07  阅读:186  来源: 互联网

标签:box num 31 hObject 7.3 flag 7.1 b1


RE

BUU_RE_Youngter-drive

查壳,upx

 

 

 

 脱壳,32位,查字符

 

 

 

 

 

主函数:

int __cdecl main_0(int argc, const char **argv, const char **envp)
{
  HANDLE v4; // [esp+D0h] [ebp-14h]
  HANDLE hObject; // [esp+DCh] [ebp-8h]

  ((void (*)(void))sub_4110FF)();
  ::hObject = CreateMutexW(0, 0, 0);
  j_strcpy(Destination, Source);
  hObject = CreateThread(0, 0, StartAddress, 0, 0, 0);
  v4 = CreateThread(0, 0, sub_41119F, 0, 0, 0);
  CloseHandle(hObject);
  CloseHandle(v4);
  while ( dword_418008 != -1 )
    ;
  sub_411190();
  CloseHandle(::hObject);
  return 0;
}

 

 

[SWPUCTF 2021 新生赛]fakebase

flag = 'xxxxxxxxxxxxxxxxxxx'

s_box = 'qwertyuiopasdfghjkzxcvb123456#$'
tmp = ''
for i in flag:
    tmp += str(bin(ord(i)))[2:].zfill(8)
b1 = int(tmp,2)
s = ''
while b1//31 != 0:
    s += s_box[b1%31]
    b1 = b1//31

print(s)

# s = u#k4ggia61egegzjuqz12jhfspfkay

大致加密流程就是把flag挨个取出然后拼接成一个字符串,然后再从s_box中取对应的值

也可以简单理解成base31

s='u#k4ggia61egegzjuqz12jhfspfkay'
s_box = 'qwertyuiopasdfghjkzxcvb123456#$'
for j in range(31):
    num = j
    for i in s[::-1]:
        num = num * 31 + s_box.index(i)
    num = str(bin(num)[2:])
    num = num.zfill((len(num) // 8 + 1) * 8) 
    flag = ""
    for i in range(0,len(num),8):
        flag += chr(int(num[i:i+8],2))
    print (flag)

flag

NSSCTF{WHAt_BASe31}

标签:box,num,31,hObject,7.3,flag,7.1,b1
来源: https://www.cnblogs.com/1ucky/p/16434958.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有