In che modo l'iniezione SQL basata sul tempo è diversa da altri tipi di iniezione SQL?

11

Capisco cos'è un'iniezione SQL basata sul tempo e capisco come funziona (almeno come viene rilevato / sfruttato).

Tuttavia, c'è qualche cosa in specifico che rende questo tipo di iniezione diverso dall'iniezione cieca basata su booleani?

Quello che sto dicendo è se si prende il seguente codice:

<?php
$x = 'admin" AND SLEEP(10)#';
$y = 'superSecretPassword';
$query = sprintf('SELECT * FROM users WHERE username="%s" AND password="%s"', $x, $y);
echo $query;
?>

che restituisce il seguente output:

SELECT * FROM users WHERE username="admin" AND SLEEP(10)#" AND password="superSecretPassword"

Questo è vulnerabile a quasi ogni forma di SQLi.

Credo che le mie domande siano:

a) Perché dovresti scegliere di eseguire un'iniezione SQL basata sul tempo su qualsiasi altro metodo di iniezione poiché Time-Based impiega così tanto tempo ed è probabilmente più rilevabile rispetto ad altri metodi?

b) (Esecuzione di SQLMap o strumenti simili in questo caso) Com'è che gli altri metodi falliscono, ma è presente un'iniezione SQL basata sul tempo?

    
posta DarkMantis 23.10.2013 - 15:58
fonte

1 risposta

11

Non ha un valore diverso da "normale" Blind SQL Injection, è solo diverso in termini di exploit.

L'unica vera ragione per andare basati sul tempo (oltre all'apprendimento, ovviamente) è se gli altri tipi di SQLi non sono disponibili. La stessa ragione per cui ti daresti fastidio con "regolare" SQLi cieco, invece del normale SQLi.

Il "normale" SQLi cieco dipende dal recupero di qualche valore, anche se è solo un bit diverso. È facile immaginare uno scenario in cui i bit ZERO si perdono direttamente, ad es. un'applicazione che pulisce la risposta, restituisce una singola risposta statica indipendentemente da ciò che si verifica nel database.

In una situazione del genere, Blind SQLi non sarebbe di aiuto. Quindi, sei costretto a recuperare quel singolo bit di informazioni in altri modi, ad esempio il ritardo di tempo. Ora, il resto delle tecniche Blind SQLi possono intervenire, basandosi su questo bit di informazione indiretto.

Quindi, per rispondere alle tue domande dirette in ordine inverso:

b) How is it that other methods fail, but Time-Based SQLi is present?

Poiché l'applicazione non restituisce nemmeno un singolo bit di informazioni direttamente, anche se è iniettabile.

a) Why would you chose to perform a Time-Based SQLi over any other method of injection as Time-Based takes so long and is arguably more detectible than other methods?

Perché (b).

    
risposta data 23.10.2013 - 16:16
fonte

Leggi altre domande sui tag