[Concurso de estudiantes de primer año de ACTF2020] BackupFile
Tabla de contenido
tema
respuesta
abierto en el rango
dinos que intentemos encontrar el archivo fuente
Ver el código fuente de la página web:
Encontrar nada
De acuerdo con el mensaje del tema
De acuerdo con el análisis del tema, podemos intentar explotar el directorio para obtener información, o intentar visitar /index.php para ver si hay una respuesta y si hay un archivo de copia de seguridad de la página.
Intenta acceder a /index.php
Se encontró que es accesible normalmente.
Visite /flag.php, si existe
Se encuentra que se puede acceder con normalidad, pero no hay eco, indicando que hay ciertas condiciones o filtrando información en el código fuente.
A continuación, continuamos analizando, el archivo de copia de seguridad del código fuente del sitio web, adivine si es /index.php.bak, intente acceder
Se encuentra que aparece la información sobre la descarga del archivo de copia de seguridad
Después de descargarlo localmente, ábralo con un editor de texto
Abre y encuentra el código fuente.
A través del análisis del código fuente, podemos ver que entre los parámetros clave pasados, hay una comparación débil de PHP (==), y el punto clave es la función is_numeric
Hay dos símbolos de comparación == y === en php
=== Al comparar, primero juzgará si los tipos de las dos cadenas son iguales y luego comparará.
== Al comparar, primero convertirá el tipo de cadena al mismo y luego comparará
"=="类型转换的规则
1、字符串和数字比较,字符串会被转换成数字。
如:"root"==0(true)//root被转换成数字,由于root是字符串,转换失败,int(root)=0,所以比较结果是true。
2、混合字符串转换成数字,看字符串的第一个。
如:"123root"==123 "2goodyou"==2
La función is_numeric() se usa para detectar si una variable es un número o una cadena de números. Devuelve VERDADERO si la variable especificada es un número y una cadena de números; de lo contrario, devuelve FALSO.
Mire la cadena dada por la variable str en el código fuente y emita la declaración de control if,
De acuerdo con las conclusiones anteriores, podemos construir la carga útil como:
/index.php?key=123
Obtener la bandera de esta pregunta, la bandera es:
bandera{73b7db44-cd8f-4f2c-958f-9492738f0fdd}
Si el artículo es inapropiado, ¡las críticas y correcciones son bienvenidas!