Quali sono i motivi per cui questo codice di iniezione SQL non funziona? [duplicare]

0

Nella classe di Software Assurance mi è stata posta una domanda per cui la seguente query consente l'SQL injection che consentirà l'accesso in una versione phpBB non sicura ma non consentirà alcuna modifica del database.

Abbiamo preparato le nostre VM con PHP con virgolette disabilitate per consentire questo tipo di abuso. Altrimenti, questo non funzionerebbe. Abbiamo anche una versione molto vecchia di phpBB del 2005.

SELECT user_id, username, user_password, user_active, user_level,
user_login_tries, user_last_login_try
FROM USERS_TABLE
WHERE username = ’$username’ AND user_password = ’md5($password)’;

Possiamo accedere al sito phpBB usando questo comando nel campo username login.php: admin'# o admin';-- .

Ma quando provo ad inserire un account aggiuntivo nel database seguendo il codice, non sono in grado di aggiungere o modificare alcuna informazione nel database:

admin';INSERT INTO users_table(user_id,username,user_password)     
VALUES('100','user',.md5('pass'))#

Ora, perché NON riesco ad aggiungere / aggiornare / eliminare account? Ho una breve idea del perché, ma non ne sono sicuro al 100%. Non sto chiedendo come farlo funzionare, ma piuttosto perché questo non avrebbe funzionato.

    
posta HelpNeeder 18.09.2013 - 03:15
fonte

1 risposta

3

Questo MySQL è specifico? Come altri hanno notato nei commenti, l'estensione standard MySQL in PHP non supporta le query impilate. Le query in pila consentono di utilizzare punti e virgola (';') per separare le istruzioni SQL in una singola query. Questo tipo di funzionalità è supportato solo nel mysqli e PDO estensioni di PHP.

Dalla documentazione PHP :

mysql_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified link_identifier.)

La documentazione afferma esplicitamente che più query non sono supportate, quindi fortunatamente (sfortunatamente?) solo una dichiarazione può essere eseguita alla volta.

Dai anche un'occhiata a questa domanda , in quanto sembra simile al tuo.

    
risposta data 18.09.2013 - 04:32
fonte

Leggi altre domande sui tag