wp | 2020縱橫杯 | RE


兩個題都是原題,然而我第二題祥雲杯的原題還是沒弄出來。

Re

friendlyRE

這題是一個錯題,出題人把!寫成了@

先去除花指令。

然后發現有base64的表,跟了一下發現三次對表進行的變換。

  1. 是相鄰兩位互換
  2. 是大小寫互換
  3. 是有一個32位的偏移

所以首先針對base64進行處理,腳本如下:

import base64
a = "N25IKJBC5IyHav9+ZA3aqm=="
table1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
table2 = "ghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef"
b = ""
print(a)

for i in a:
if ord(i) >= ord('a') and ord(i) <= ord('z'):
b += chr(ord(i)-32)
elif ord(i) >= ord('A') and ord(i) <= ord('Z'):
b += chr(ord(i)+32)
else:
b += i
print(b)

a = ""

for i in range(0,len(b),2):
a += b[i+1]
a += b[i]
print(a)
b = ''
for i in range(len(a)-2):
tmp = table2.index(a[i])
b += table1[tmp]

b+='=='
print(b)
# 解碼
x = base64.b64decode(b)
print(x)
print(len(x))
with open('en.txt', 'w') as f:
for i in x:
f.write(str(hex(i))[2:])
f.write(' ')

將源數據從文件中取出來。

跟進加密的模塊,發現一個256大小的int型數組,和一個大小為4的固定數組,很容易識別為sm4算法。

使用pysm4對上面得出的明文進行解密,密鑰即為圖中的局部變量字符串:

圖片

隨后再捕獲異常進行base64編碼。

一開始base表中4和5寫反了導致怎么出來都是亂碼,耽誤了很多時間......

sm4的解密腳本如下:

from pysm4 import decrypt
en = 0x5870990c4f3b099078d6079ce93817b3
key = 0x546869736973696e7374657265737468
de = decrypt(en, key)
print hex(de)[2:-1]

得到結果:446f796f754b6e6f7756454853454821
然后轉字符串就好了:

圖片

加上flag{}

最終flag為flag{DoyouKnowVEHSEH!}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM