XCTF-Web Nueva pregunta-PHP2 (NO.GFSJ0234)

Nueva pregunta XCTF-PHP2 (NO.GFSJ0234)

Encienda la máquina de destino e inicie el entorno virtual.Insertar descripción de la imagen aquí

Copia la URL y ábrela con Firefox
Insertar descripción de la imagen aquí

Se muestra "¿Puedes iniciar sesión en este sitio web?", y no hay respuesta al hacer clic en cualquier área. En este momento, presione "F12" para abrir el código fuente de la página web y verlo.
Insertar descripción de la imagen aquí

También puede ingresar en la consola de línea de comando “curl -i 网址”para ver los resultados devueltos.
Insertar descripción de la imagen aquí

Firefox revisó el código fuente y no encontró nada. Mirando hacia atrás en el mensaje de pregunta, podemos adivinar que se trata de contenido php. Puede usar Yujian para escanear el fondo y ver index.phpel archivo.
Insertar descripción de la imagen aquí

Así que verifiqué de acuerdo con la URL del resultado del escaneo y el resultado solo mostró el contenido anterior.
Insertar descripción de la imagen aquí

En este momento, pensé que el archivo phps es en realidad el archivo de código fuente de php. En circunstancias normales, se utiliza para mostrar directamente el contenido del código php a los usuarios (visitantes) en un navegador web. Debido a que los usuarios no pueden ver el contenido de los archivos php directamente a través de un navegador web, deben usar archivos phps en su lugar. Ver en Firefox y consola de línea de comando:
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

El código principal es el siguiente:

<?php
if("admin"===$_GET[id]) {
    
    
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
    
    
  echo "<p>Access granted!</p>";
  echo "<p>Key: xxxxxxx </p>";
}
?>

Interpretación del código:
el valor de la identificación entrante es igual “$_GET[id] = urldecode($_GET[id])”al valor que todavía es "admin" después del procesamiento de la función. Esta función es una función de decodificación de URL, es decir, el valor de la URL que debe ingresarse con un valor de identificación de "admin" está cifrado en hexadecimal. Utilice la URL para agregarlo en línea. Descifrar conversiones de sitios web
Insertar descripción de la imagen aquí

Agregue el resultado de la conversión "?=%61%64%6d%69%6e" directamente después de la URL, pero aún no se puede obtener la marca.
Insertar descripción de la imagen aquí

Es posible que "%" también necesite codificación URL. Aquí, "%61%64%6d%69%6e" se codifica y se convierte nuevamente para obtener "%2561%2564%256d%2569%256e". Después de la transmisión, el se obtiene la bandera
Insertar descripción de la imagen aquí

Aviso:

Se encontró en el código que existe if("admin"===$_GET[id]) y if("admin"==$_GET[id])está relacionado con la sintaxis PHP, es decir “==”, “==”el operador solo compara valores, independientemente del tipo de datos de la variable, y pueden ocurrir algunos resultados de comparación que no estén en línea con las expectativas; y el El operador “===”es el operador de congruencia en PHP y se utiliza para comparar si dos valores de variables y tipos de datos son iguales.

Referencia:
XCTF Mundo de Ataque y Defensa PHP2
CTF_EXP02: XCTF PHP2

Supongo que te gusta

Origin blog.csdn.net/MANCXUARY/article/details/132199781
Recomendado
Clasificación