Para acceder al level 11 de Natas necesitamos los siguientes datos de acceso (la contraseña ha sido obtenida en el reto natas10):
Username: natas11
Password: U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK
URL: http://natas11.natas.labs.overthewire.org
Una vez hayamos accedido a este nivel veremos un mensaje que nos indica Las cookies están protegidas con encriptación XOR.
También podemos ver el código fuente del sitio web haciendo clic en el enlace View sourcecode que se encuentra resaltado en color azul.
Lo primero que podemos observar en el código es la función de cómo se ha encriptado la cookie.
Para obtener la cookie data
, podemos abrir el inspector de elementos de Mozilla Firefox, y acceder a la pestaña Storage
, y copiar el campo Value
.
Reutilizando la función xor_encrypt
del código original, podemos pasarle la cookie data
e indicando que la variable $key
será $defaultdata
(codificada en json):
$defaultdata = array( "showpassword"=>"no", "bgcolor"=>"#ffffff");
$cookie = "ClVLIh4ASCsCBE8lAxMacFMZV2hdVVotEhhUJQNVAmhSEV4sFxFeaAw=";
function xor_encrypt($in, $defaultdata) {
$key = $defaultdata;
$text = $in;
$outText = '';
// Iterate through each character
for($i=0;$i<strlen($text);$i++) {
$outText .= $text[$i] ^ $key[$i % strlen($key)];
}
return $outText;
}
echo xor_encrypt(base64_decode($cookie), json_encode($defaultdata));
El resultado de ejecutar este código, nos devolverá la clave para obtener nuestra contraseña: qw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jq
Ahora debemos fijarnos que para que se muestre la clave, la opción showpassword
debe ser igual a yes.
Igual que antes, reutilizando la función xor_encrypt
ahora le asignamos a la variable $key
el valor de la clave obtenida anteriormente.
$data = array( "showpassword"=>"yes", "bgcolor"=>"#ffffff");
function xor_encrypt($in) {
$key = 'qw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jq';
$text = $in;
$outText = '';
// Iterate through each character
for($i=0;$i<strlen($text);$i++) {
$outText .= $text[$i] ^ $key[$i % strlen($key)];
}
return $outText;
}
echo base64_encode(xor_encrypt(json_encode($data)));
El resultado de ejecutar este código, nos devolverá el nuevo valor la cookie encriptada que nos servirá para obtener la contraseña para acceder al siguiente nivel: ClVLIh4ASCsCBE8lAxMacFMOXTlTWxooFhRXJh4FGnBTVF4sFxFeLFMK
Simplemente debemos cambiar el campo Value
de la cookie data
por este nuevo obtenido.
Una vez cambiado el valor de la cookie, podemos presionar F5 para actualizar la página y ya obendremos la contraseña para acceder al siguiente nivel.
La contraseña para acceder a nivel natas 12 es EDXp0pS26wLKHZy1rDBPUZk0RKfLGIR3
Este reto ha sido resuelto por Init0 (initcero) un equipo red team en Canarias (España).