← Volver al listado de tecnologías

Natas Nivel 8 - Reversión de Encoding

Por: SiempreListo
overthewirenatasencodingbase64hexnivel-8

Natas Nivel 8 - Reversión de Encoding

Objetivo

Similar al nivel 6, hay un formulario de “secret”. Pero esta vez el código muestra cómo se codificó el secret.

Análisis del Código

<?php
$encodedSecret = "3d3d516343746d4d6d6c315669563362";

function encodeSecret($secret) {
    return bin2hex(strrev(base64_encode($secret)));
}

if(array_key_exists("submit", $_POST)) {
    if(encodeSecret($_POST['secret']) == $encodedSecret) {
        print "Access granted...";
    }
}
?>

La Función de Codificación

bin2hex(strrev(base64_encode($secret)))

Orden de operaciones:

  1. base64_encode() - Codifica en Base64
  2. strrev() - Invierte el string
  3. bin2hex() - Convierte a hexadecimal

Solución: Revertir el Proceso

Para decodificar, hacemos lo opuesto en orden inverso:

base64_decode(strrev(hex2bin($encodedSecret)))

Paso 1: hex2bin

Convierte hexadecimal a binario.

Paso 2: strrev

Invierte el string.

Paso 3: base64_decode

Decodifica Base64.

Implementación

PHP

<?php
$encoded = "3d3d516343746d4d6d6c315669563362";
echo base64_decode(strrev(hex2bin($encoded)));
?>

Python

import base64
import codecs

encoded = "3d3d516343746d4d6d6c315669563362"

# hex → bytes
step1 = codecs.decode(encoded, 'hex')
# reverse
step2 = step1[::-1]
# base64 decode
result = base64.b64decode(step2)

print(result.decode())

Bash

echo "3d3d516343746d4d6d6c315669563362" | xxd -r -p | rev | base64 -d

CyberChef

Usa la receta:

  1. From Hex
  2. Reverse
  3. From Base64

Teoría: Encoding vs Encryption

CaracterísticaEncodingEncryption
PropósitoTransformar datosProteger datos
Clave requeridaNo
ReversibleSiempreSolo con la clave
SeguridadNingunaAlta (si es bueno)

Encodings Comunes

EncodingEjemplo
Base64SGVsbG8=
Hex48656c6c6f
URLHello%20World
HTML&lt;div&gt;

Por Qué No Es Seguro

Este código usa “security through obscurity”:

Conceptos Aprendidos

ConceptoDescripción
Encoding reversalRevertir transformaciones
bin2hex/hex2binConversión hexadecimal
strrevInversión de strings
Base64Encoding común

Siguiente Nivel