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.