Sfruttare la base sindacale per l'iniezione di SQL [chiusa]

-2

Un sito Web PHP termina con php?id=1 e quando inserisco un tic stampa questo errore:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/otmsm/public_html/bonnes_adresses.php on line 75

Il problema è quando desidero inserire ORDER BY 100-- dopo (il link dovrebbe essere php?id=1 order by 100-- ) non cambia la pagina e ha ancora lo stesso errore stampato sullo schermo ... Quindi, la domanda è: come so quante tabelle ci sono?

    
posta Bob Ebert 13.07.2015 - 03:20
fonte

2 risposte

1

L'errore che ricevi dalla pagina non ha nulla direttamente da fare con il tentativo di iniezione SQL. Sembra che il sito impieghi un casting semplice per garantire che id sia numerico, quindi la query diventa una query valida che non restituisce nulla a meno che non invii un numero semplice:

$id = (int)$_GET['id'];

In altre parole, non tutte le query che puoi creare dalla riga dell'URL sono automaticamente completamente iniettabili SQL.

L'errore che ottieni è quello della query che non restituisce nulla, perché non ci sono righe con un tipo di zero.

Questo tipo di "whitelisting semplice" non è solo sfruttabile, perché l'exploit non raggiungerà mai il livello SQL; anche se altre parti del sito web potrebbero essere (l'uso delle funzioni mysql_ * e la mancanza di controlli per il fallimento della query non sono dei buoni segni).

Tuttavia, penso che sarebbe modo meglio cercare un sito web di test di SQL injection (ne conoscevo uno ma ora è apparentemente offline, il dominio in vendita) e lasciare la brava gente di Montreuil-sur-Mer da solo con i loro indirizzi bonne . In un pizzico, ci sono diverse esercitazioni che è possibile implementare su una macchina virtuale per testare i diversi approcci e le diverse piattaforme SQL.

    
risposta data 13.07.2015 - 10:23
fonte
-1

L'errore che vedi è il risultato di una query fallita. Molto probabilmente a causa di dati non corretti inviati alla stringa di query, è possibile che mysql_real_escape_string() venga utilizzato per sfuggire ai caratteri SQL (che verrebbero utilizzati in un attacco) che spiegherebbe perché il tentativo di iniezione non è riuscito. Anche se più probabile sarebbe il tuo tentativo di attacco sbagliato. Dovremmo vedere la tua query di attacco esatta per sapere cosa sta succedendo. Se hai accesso a questo sistema, ovviamente puoi controllare mysql_error . Se non si ha accesso a questo sistema, tenere presente che potrebbe essere illegale eseguire un attacco su questo computer senza il permesso del proprietario del sistema.

    
risposta data 13.07.2015 - 04:36
fonte

Leggi altre domande sui tag