SQLi: estrai i dati MySQL senza conoscere i nomi delle colonne?

-3

Ecco il codice vulnerabile:

<?php
     $filtered = "/information|schema|_/i"; 
    #... blahblah

    $query = "SELECT * FROM user WHERE id='$id' AND pw='$pw';"; // exist hidden column
    $query = @mysql_fetch_array(mysql_query($query)); 
?>

Non è possibile accedere alla tabella information_schema, poiché viene filtrata dall'iniezione.

C'è un modo per estrarre i dati senza conoscere il nome della colonna?

    
posta ansogpo1 18.11.2015 - 12:29
fonte

2 risposte

2

Certo, aggiungi una condizione come questa:

OR 1 = 1

alla clausola where. Per il tuo esempio potresti passare un valore di test' OR '1'='1 per eseguire questo tipo di attacco.

Ovviamente se vuoi selezionare colonne che non conosci il nome di te puoi semplicemente specificare SELECT *...

    
risposta data 18.11.2015 - 16:20
fonte
1

Sì, puoi, anche se sei un po 'limitato. Le opzioni sono:

  • tutti i dati delle tabelle con lo stesso numero di colonne della tabella dalla quale seleziona la selezione originale, purché tu conosca il nome della tabella. L'iniezione sarebbe:

    ' UNION SELECT * from someOtherTable -- -.
    
  • tutti i dati delle tabelle con meno nomi di colonna rispetto alla quantità di colonne nella tabella originale, a condizione che esista una tabella con la quantità di colonne della tabella originale meno la quantità di colonne che si desidera selezionare:

    ' UNION SELECT * from someOtherTable JOIN aThirdTable -- -
    
  • tutte le meta informazioni disponibili tramite le funzioni ( version() , database() e così via).

  • tutti i dati delle tabelle in cui conosci le colonne, ad esempio mysql.user .
  • Puoi indovinare i nomi delle colonne.

L'elemento che specifica le colonne selezionate è chiamato select_expr nella documentazione di MySQL . Se non controlli l'espressione select della selezione originale, e non conosci i nomi delle colonne, e non puoi creare la giusta quantità di colonne tramite join, c'è - per quanto ne so, e mentre leggo la documentazione - in nessun modo di realizzarlo.

    
risposta data 27.08.2016 - 21:19
fonte

Leggi altre domande sui tag