[BUUCTF] REVERSE —— [FlareOn3] Challenge1

[FlareOn3] Challenge1

anexo

paso

  1. Inspección de rutina, programa de 32 bits, sin shell
    Inserte la descripción de la imagen aquí
  2. Ejecute el programa para ver la situación general.
    Inserte la descripción de la imagen aquí
  3. Se carga ida de 32 bits. La
    Inserte la descripción de la imagen aquí
    lógica es muy simple. Primero, ingresemos la contraseña y existamos en NumberOfBytesWrittenella. Luego realizamos NumberOfBytesWrittenla operación en la línea 15 para obtener str1. ¡Cuando str1=x2dtJEOmyjacxDemx2eczT5cVS9fVUGvWTuZWjuexjRqy24rV29q, la salida es correcta!
  4. El programa sub_401260 ()
    Inserte la descripción de la imagen aquí
    toma cada tres dígitos y luego comienza el cálculo desde la línea 39. Al agregar 0x3F, es fácil adivinar que es un cifrado base64, pero es un poco diferente del cifrado base64 normal. Su tabla de contraseñas ha sido modificada .
    Inserte la descripción de la imagen aquí
    La tabla de contraseñas que se utiliza para el cifrado aquí es "ZYXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789 + /" La
    tabla de contraseñas cifradas en base64 normal es "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgh0
    .

Escriba un script de descifrado para encontrar los datos cifrados en base64 originales, y luego decodifíquelos en base64

import base64

encoded_flag = "x2dtJEOmyjacxDemx2eczT5cVS9fVUGvWTuZWjuexjRqy24rV29q"

#ZYXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789+/
#ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
_list = list("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")

_flag = ""

for i in encoded_flag:
    if (ord(i) <= ord('W') and ord(i) >= ord('A')) or (ord(i) <= ord('w') and ord(i) >= ord('a')):
        _flag += chr(ord(i) + 3)
    elif i == 'X':
        _flag += 'C'
    elif i == 'Y':
        _flag += 'B'
    elif i == 'Z':
        _flag += 'A'
    elif i == 'x':
        _flag += 'c'
    elif i == 'y':
        _flag += 'b'
    elif i == 'z':
        _flag += 'a'
    else:
        _flag += i

print(_flag)

print(base64.b64decode(_flag).decode())

Inserte la descripción de la imagen aquí
flag{[email protected]}

Para aquellos que no están muy familiarizados con el cifrado base64, pueden leer este artículo.

Supongo que te gusta

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