Registro web XCTF (ics-07)

ics-07

Abra la página:
Inserte la descripción de la imagen aquí
hay una fuente de visualización directa, abierta, un total de tres partes:

<?php
    session_start();

    if (!isset($_GET[page])) {
    
    
      show_source(__FILE__);
      die();
    }

    if (isset($_GET[page]) && $_GET[page] != 'index.php') {
    
    
      include('flag.php');
    }else {
    
    
      header('Location: ?page=flag.php');
    }

    ?>
<?php
     if ($_SESSION['admin']) {
    
    
       $con = $_POST['con'];
       $file = $_POST['file'];
       $filename = "backup/".$file;

       if(preg_match('/.+\.ph(p[3457]?|t|tml)$/i', $filename)){
    
    
          die("Bad file extension");
       }else{
    
    
            chdir('uploaded');
           $f = fopen($filename, 'w');
           fwrite($f, $con);
           fclose($f);
       }
     }
     ?>

Aquí, la sesión debe ser el usuario administrador, y luego se cargará el archivo y se debe omitir la coincidencia regular.

<?php
      if (isset($_GET[id]) && floatval($_GET[id]) !== '1' && substr($_GET[id], -1) === '9') {
    
    
        include 'config.php';
        $id = mysql_real_escape_string($_GET[id]);
        $sql="select * from cetc007.user where id='$id'";
        $result = mysql_query($sql);
        $result = mysql_fetch_object($result);
      } else {
    
    
        $result = False;
        die();
      }

      if(!$result)die("<br >something wae wrong ! <br>");
      if($result){
    
    
        echo "id: ".$result->id."</br>";
        echo "name:".$result->user."</br>";
        $_SESSION['admin'] = True;
      }
     ?>

Hay una consulta de declaración SQL, pero se utiliza una comparación sólida.

Obtenga el valor de coma flotante de la variable, que no puede ser 1, y el último dígito de la variable es igual a 9.

Acabado de ideas:

Si la sesión es un usuario administrador, se puede resolver la consulta SQL.
Primero empalme el nombre del archivo en el directorio de respaldo, luego omita lo normal y haga coincidir el sufijo del último punto.
Utilice la carga de archivos para cargar un troyano de una frase.

Paso 1: Encuentra la sesión del usuario administrador.
carga útil:

Siempre que haya caracteres entre 1 y 9.

Paso 2: omita la regularidad.

/. Bypass, este método significa agregar un directorio vacío debajo del directorio de nombre de archivo, lo que equivale a no agregar.

El tercer paso: subir archivos.

Utilice POST para pasar parámetros:
Inserte la descripción de la imagen aquí

Compruebe si la carga se ha realizado correctamente:
Inserte la descripción de la imagen aquí

ok, conexión de hormiga espada.

Supongo que te gusta

Origin blog.csdn.net/qq_45742511/article/details/114627533
Recomendado
Clasificación