BUUCTF-[Competencia de primer año de ACTF2020] BackupFile

[Concurso de estudiantes de primer año de ACTF2020] BackupFile

tema

imagen-20230627204937152

respuesta

abierto en el rango

imagen-20230627205010403

dinos que intentemos encontrar el archivo fuente

Ver el código fuente de la página web:

imagen-20230627205052363

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

imagen-20230627205721071

Se encontró que es accesible normalmente.

Visite /flag.php, si existe

imagen-20230627205823997

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

imagen-20230627210045623

Después de descargarlo localmente, ábralo con un editor de texto

Abre y encuentra el código fuente.

imagen-20230627210136405

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,

imagen-20230627211900346De acuerdo con las conclusiones anteriores, podemos construir la carga útil como:

/index.php?key=123

imagen-20230627211926664

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!

Supongo que te gusta

Origin blog.csdn.net/rumil/article/details/131430484
Recomendado
Clasificación