SQL Injection ByPass

-1
$result = $db->query('SELECT * FROM USERS WHERE password="'.$_GET['password'].'"');
if($result->fetchArray()) $step1=true;

$result = $db->query('SELECT * FROM USERS WHERE password=\''.$_GET['password'].'\'');
if($result->fetchArray()) $step2=true;

$result = $db->query('SELECT * FROM USERS WHERE password='.$_GET['password']);
if($result->fetchArray()) $step3=true;

Questo codice fa parte di una sfida per il ctf che sto facendo rigorosamente a scopo di apprendimento e non sono abbastanza sicuro su come ottenere che ognuna di queste istruzioni SQL sia valutata come vera.

Alcuni pensieri che ho avuto è stato fare una dichiarazione di inserimento in cui la password sarebbe uguale alla dichiarazione di iniezione, ma non sono sicuro se questo è un buon approccio. Se possibile, vorrei ottenerlo senza modifiche al database di back-end.

Non cerco davvero una risposta diretta, ma forse qualche consiglio.

Apprezzo l'aiuto.

EDIT : $ step1, $ step2 e $ step3 devono tutti valutare true

    
posta CBaker 08.04.2018 - 00:11
fonte

1 risposta

0

Il sito web OWASP Foundation è una fonte ricca di argomenti di sicurezza delle informazioni .

Hanno una pagina designata per SQL Injection Bypassing .

Il tuo obiettivo è che devi assicurarti che, nonostante sia stata costruita la query, il risultato sarà un true valore.

Un esempio fornito da OWASP era il seguente:

select * from table where id = 1 AND if((ascii(lower(substring((select user()),$i,1))))!=$s,1,benchmark(200000,md5(now())))

La maggior parte dei siti Web che prendono seriamente i propri dati dispongono di mezzi per proteggere i propri database da tutti i tipi di attacchi di Injection , uno di base è sanitizzazione dell'input .

Riferimento: SQL Injection Bypassing WAF - OWASP. (2018). Owasp.org. Estratto l'8 aprile 2018 da link

    
risposta data 08.04.2018 - 02:59
fonte

Leggi altre domande sui tag