[BUUCTF] REVERSE —— [Zer0pts2020] strcmp facile

[Zer0pts2020] strcmp facile

annexe

étape

  1. Inspection de routine, programme 64 bits
    Insérez la description de l'image ici
  2. Ida 64 bits est ouvert. Un
    Insérez la description de l'image ici
    programme très simple qui compare le tableau a2 avec la zer0pts{********CENSORED********}même invite correcte!
    Ensuite, vous devez savoir quelles opérations a2 a effectuées avant d'entrer dans la fonction principale. Cela devrait être parce que ce n'est pas un fichier exe. Je ne peux pas l'ajuster. Normalement, je dois l'ajuster pour savoir où effectuer les entrées chaîne a2. Opération, j'ai jeté un coup d'œil à la liste des fonctions à côté de moi et j'ai trouvé que la fonction avec le paramètre a2 est
    Insérez la description de l'image ici
    décalée vers la droite de 3 chiffres, ce qui équivaut à diviser la chaîne en 8 groupes, et la valeur correspondante de qword_201060 est soustrait. Get zer0pts{********CENSORED********}
    Insérez la description de l'image ici
    Remarque: La mémoire est stockée en tant que stockage little-endian, nous devons donc inverser l'ordre après avoir converti la chaîne en ascii
enc = "********CENSORED********"
m = [0x410A4335494A0942, 0x0B0EF2F50BE619F0, 0x4F0A3A064A35282B]
 
import binascii
 
flag =b""  #由于是字节操作,需要在前面加上b
for i in range(3):
    p = enc[i*8:(i+1)*8]     #将enc字符串8位一组分开
    print(p)
    a = binascii.b2a_hex(p.encode('ascii')[::-1])   #将分开后的字符串转每一位转换成ascii,然后逆序
    print(a)
    b = binascii.a2b_hex(hex(int(a,16) + m[i])[2:])[::-1]   #(enc[i]的ascii+m[i])的结果是16进制,[2::]是舍弃开头的0x,然后[::-1]逆序
    print(b)
    print('\n')

    flag += b  #拼凑每组还原后的结果
    
print (flag)

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/mcmuyanga/article/details/113567716
conseillé
Classement