Le iniezioni SQL non sembrano funzionare

1

Sto provando ad eseguire uno SQLi ma il mysql dà una risposta all'errore. L'input dovrebbe commentare tutto, dopo i due trattini, in modo che possa risultare in questo: '%' . Invece dà questo errore: '--%' '.

Questo è il codice che sto usando per eseguire la query con.

if(isset($_GET['test'])){

    $test = $_GET['test'];

    //test
    $res = $db->run_query_find_all( "SELECT * FROM product WHERE name LIKE '%$test%'");

    while($product = $res->fetch_assoc()){
        print_r($product);
    }

}

ingresso

';--

Nell'esempio dell'editor:

Risposta:

YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'--%''atline1

Aggiorna

RicevoancoraunerroreanchesesemplificailmioSQLi.QuandofacciounarichiestaPOSTconlastessaquery,nonmostraerrori,mamostratuttelerighedellatabellaProdotto,ilchesignificacheSQLièstatosuccesso.

Input:'--

Input:'#

    
posta melkawakibi 26.05.2017 - 15:37
fonte

2 risposte

4

Per prima cosa, esaminiamo il tuo input:

'   <-- this closes the quoted string
;   <-- this closes the SELECT statement
--  <-- this comments out the rest

Questo in realtà non ha molto senso. Anche se la tua funzione run_query_find_all supporta più query, il che è improbabile, perché dovresti creare una nuova query solo per commentarla? [In realtà non dovrebbe causare problemi, ma non è nemmeno necessario, ed è sempre bene mantenere il carico utile il più semplice possibile; la complessità rende difficile vedere dove sono gli errori reali]

Ciò significa che possiamo semplificare il tuo payload a '-- .

Ora abbiamo questo:

'   <-- this closes the quoted string
--  <-- this comments out the remaining characters, so that we have a valid query

Tuttavia otteniamo comunque un errore. La documentazione per i commenti MySQL spiega perché:

From a -- sequence to the end of the line. In MySQL, the -- (double-dash) comment style requires the second dash to be followed by at least one whitespace or control character (such as a space, tab, newline, and so on).

Hai bisogno di un carattere di spaziatura dopo il commento a due trattini. Quindi, aggiungilo o usa un altro carattere di commento:

'-- -   <-- will work
'#       <-- will also work (URL encode as %23 if needed)

Tieni presente che ho aggiunto un altro carattere dopo lo spazio bianco per evitare che gli spazi vengano ritagliati.

    
risposta data 26.05.2017 - 15:58
fonte
1

La documentazione dice:

In MySQL, the -- (double-dash) comment style requires the second dash to be followed by at least one whitespace or control character (such as a space, tab, newline, and so on). This syntax differs slightly from standard SQL comment syntax.

    
risposta data 26.05.2017 - 15:58
fonte

Leggi altre domande sui tag