Time based SQL injection
Zdravím, našel by se tu nějaký odborník, co by mi vysvětlil jak funguje time based sqli, +/- oproti ostatním typům injekcí a hlavně jak proti tomu zapezpečit web?
Nikde jsem nic srozumitelného v cz nenašel.
Díky
Zdravím, našel by se tu nějaký odborník, co by mi vysvětlil jak funguje time based sqli, +/- oproti ostatním typům injekcí a hlavně jak proti tomu zapezpečit web?
Nikde jsem nic srozumitelného v cz nenašel.
Díky
Předmět | Autor | Datum |
---|---|---|
V prípade, že sa na stránke nezobrazuje výsledok SQL dopytu, tak jedna možnosť, ako zistiť, či sa SQ… los 16.07.2012 14:03 |
los | |
To teda neni ono, ani omylem, sql time injection je tohle:
select * from nahE_fotky where pridano>s… AZOR 19.07.2012 01:50 |
AZOR | |
A co je teda potom tohle?
http://www.defcon.org/images/defcon-16/dc16-presen tations/alonso-parada/d… Wikan 19.07.2012 07:42 |
Wikan | |
To si si asi pomýlil s útokom, ktorý zneužíva implicitnú konverziu dátového typu (v tomto prípade dá… poslední los 19.07.2012 09:42 |
los | |
Děkuji, něco takového jsem potřeboval :) Swix 19.07.2012 00:02 |
Swix |
Zpět do poradny Odpovědět na původní otázku Nahoru
V prípade, že sa na stránke nezobrazuje výsledok SQL dopytu, tak jedna možnosť, ako zistiť, či sa SQL kód vykonal alebo nie, je na základe času trvania SQL dopytu. Vďaka tomu vieš na ľubovoľný SQL dopyt dostať odpoveď typu áno/nie.
Takže ak vieš injectnúť SQL, tak tam môžeš dať nejakú podmienku, na základe ktorej bude vykonávanie trvať buď 10 sekúnd alebo len 1 sekundu. Podľa času nahrávania stránky budeš potom vedieť určiť, ktorá vetva sa vykonala.
Web proti tomu zabezpečíš tak ako proti každej SQL injection - budeš ošetrovať vstupy (napr. parametrizáciou SQL dopytov alebo escapovaním hodnôt).
To teda neni ono, ani omylem, sql time injection je tohle:
select * from nahE_fotky where pridano>sysdate
ALTER SESSION SET nls_date_format="pridano or 1=1";
=> select * from nahe_fotky where pridano>pridano or 1=1
select sysdate from dual; => pridano or 1=1
A co je teda potom tohle?
http://www.defcon.org/images/defcon-16/dc16-presen tations/alonso-parada/defcon-16-alonso-parada-wp.p df
To si si asi pomýlil s útokom, ktorý zneužíva implicitnú konverziu dátového typu (v tomto prípade dátumu) na reťazec pri vytváraní dynamických SQL dopytov priamo na SQL serveri. Kto vytvára v uložených procedúrach dynamicky SQL dopyt, musí tiež ošetrovať svoje vstupy - parametrizáciou alebo escapovaním. To nemá s time-based SQL injection nič spoločné, hoci sa zneužíva nastavenie formátu času.
Typický dopyt pre time-based SQL injection vyzerá (pre MSSQL) takto:
Podľa času vykonávania vieš potom v tomto prípade určiť číslo verzie SQL servera.
Děkuji, něco takového jsem potřeboval :)