Iniezione SQL cieca: comprensione delle query pesanti

2

Questo articolo ( PDF ) parla di una tecnica di iniezione cieca basata su query pesanti.

Domande:

  1. Qualcuno può spiegarmi lo scopo di utilizzare query pesanti rispetto alle normali tecniche basate sul tempo? Forse, quando le stored procedure e le funzioni di benchmark sono disabilitate, ricorrere a query pesanti è l'unico modo per eseguire un po 'di indagini sulla vulnerabilità?

  2. Con riferimento a MySQL, il fatto che ci vogliono 30 secondi cosa significa? Il mio ragionamento è: se sono necessari 30 secondi, è possibile eseguire la query iniettata (query pesante) in modo che, poiché la query è stata studiata appositamente per MySQL, la piattaforma di database è MYSQL. Ma per quanto riguarda il risultato negativo?

  3. Ho ragione nel dire che l'approccio di query pesanti è usato solo per recuperare informazioni sulla piattaforma del database? In realtà è un altro modo per ottenere quel tipo di informazione. Altri metodi si occupano di Benchmark e funzione sleep (MySQL).

posta user1990170 28.01.2013 - 11:23
fonte

1 risposta

0

Credo che l'intento sia di fare in modo che la query richieda un intervallo di tempo lungo (misurabile) nel caso in cui la query venga eseguita in un modo particolare e, di conseguenza, richiede un breve periodo di tempo se ne viene eseguita un'altra. Ciò significa che puoi determinare le parti della query che sono state eseguite.

Il modo in cui interpretate ciò dipende, tuttavia, da che cosa era la vostra query originale e da ciò che vi siete riusciti a iniettare in SQL e non siete limitati a determinare le piattaforme di database.

Utilizzando SQL injection cieco è possibile trasformare il database in una macchina TRUE / FALSE dove è possibile porre la domanda TRUE / FALSE su qualsiasi cosa memorizzata e ottenere una risposta appropriata, e quindi è possibile elaborare lentamente molte cose sul database .

Esempio di vita reale Ho avuto un caso di iniezione SQL cieca che richiederebbe molto tempo (circa 20 secondi) se alcune query iniettate fossero vere, e restituirebbe immediatamente se false. Quindi, data la stringa di iniezione:

value' and 'bob' = (select user from table)--

Posso enumerare tutti gli utenti del sistema

    
risposta data 28.01.2013 - 11:52
fonte

Leggi altre domande sui tag