ctf.show_web40 (ejecución de comando)

web40 sin parámetro RCE bypass

Código fuente

<?php
if(isset($_GET['c'])){
    
    
    $c = $_GET['c'];
    if(!preg_match("/[0-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){
    
    
        eval($c);
    }
        
}else{
    
    
    highlight_file(__FILE__);
}

El wp del tipo grande
usa la postura del RCE sin parámetros.
Un error son los corchetes:

No (), pero ()
Referencia: Función paramétrica de PHP RCE

método uno

Leer archivo + transformación de matriz,
anotar primero la carga útil

?c=highlight_file(next(array_reverse(scandir(pos(localeconv())))));

La función requerida
localeconv (): devuelve una matriz que contiene números locales e información de formato de moneda. El primero en la matriz es un punto (.)
Scandir (): obtiene los archivos en el directorio, scandir (.): Obtiene todos los archivos en el directorio actual
pos (): devuelve el valor del elemento actual en la matriz.
array_reverse (): orden inverso de la matriz
next (): la función apunta el puntero interno al siguiente elemento de la matriz y lo muestra.
highlight_file (): función para leer el contenido del archivo y la salida

responder

00x1

Primero, obtenga el punto (.) A través de pos (localeconv ()).
Este método también tiene las siguientes funciones que pueden ser reemplazadas

dirname(_FILE_)
current(localeconv()
reset(localeconv()
pos(localeconv()
getcwd()

Debido a que scandir ('.') Significa obtener los archivos en el directorio actual,
scandir (pos (localeconv ())) puede obtener los archivos en el directorio raíz.
El contenido específico es el siguiente
Inserte la descripción de la imagen aquí

00x2

Luego obtenga el resultado de la matriz de archivos, busque que el archivo que desea obtener está ordenado más tarde, luego puede ajustar el puntero del archivo y usar la función
array_reverse () para ordenar el archivo de salida al revés
Inserte la descripción de la imagen aquí

00x3

next (): la función apunta el puntero interno al siguiente elemento de la matriz y lo genera.
Para generar el archivo de puntero especificado, la función next () necesita cooperar con la función highlight_file () para generar el archivo
Inserte la descripción de la imagen aquí

Método dos

Utilice session_id ()

Al principio, use session_id () para modificar el contenido de PHPSESSID en la cookie a ls,
Inserte la descripción de la imagen aquí
pero el archivo no se puede leer cuando el parámetro se pasa como bandera. El
Inserte la descripción de la imagen aquí
análisis de la razón específica
proviene de: https://blog.csdn.net/ miuzzx / article / details / 108415301 ha sido
probado y se encontró que se puede ejecutar de 5.5 a 7.1.9 afectado por la versión de PHP, porque el session_id se especifica como los caracteres en 0-9, az, AZ, -. Por debajo de 5.5 y por encima de 7.1, no es posible escribir otro contenido. Pero los personajes que cumplen con los requisitos aún son posibles.
Limitado por la versión PHP.

Supongo que te gusta

Origin blog.csdn.net/weixin_46250265/article/details/114266578
Recomendado
Clasificación