[BUUCTF] REVERSE —— [Zer0pts2020] easy strcmp

[Zer0pts2020] strcmp fácil

anexo

paso

  1. Inspección de rutina, programa de 64 bits
    Inserte la descripción de la imagen aquí
  2. Ida de 64 bits está abierto. ¡Un
    Inserte la descripción de la imagen aquí
    programa muy simple que compara la matriz a2 con el zer0pts{********CENSORED********}mismo indicador correcto!
    Luego, necesita saber qué operaciones ha realizado a2 antes de ingresar a la función principal. Debería ser porque no es un archivo exe. No puedo ajustarlo. Normalmente, necesito ajustarlo para averiguar dónde realizar la entrada cadena a2. Operación, eché un vistazo a la lista de funciones junto a mí y descubrí que la función con el parámetro a2 se
    Inserte la descripción de la imagen aquí
    desplaza hacia la derecha en 3 dígitos, lo que equivale a dividir la cadena en 8 grupos, y el valor correspondiente de qword_201060 se resta. Obtener zer0pts{********CENSORED********}
    Inserte la descripción de la imagen aquí
    Nota: la memoria se almacena como almacenamiento little-endian, por lo que debemos invertir el orden después de convertir la cadena a 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)

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/mcmuyanga/article/details/113567716
Recomendado
Clasificación