Ga naar hoofdinhoud

SQL Injection (Blind) — Medium

Op het Medium level is het formulier weer veranderd naar een dropdown-menu, én ontbreken de aanhalingstekens in de query, net als bij de gewone SQL Injection.

1. Predict (Voorspel)

We weten nu hoe een Ja/Nee (Boolean) injectie werkt. Soms vertelt de applicatie je echter niet eens "Exists" of "Missing", maar gebeurt er in beide gevallen op de pagina exact hetzelfde. Hoe kunnen we dán Yes/No vragen stellen aan de server?

Antwoord

We kunnen overstappen op Time-Based Blind SQL Injection. We commanderen de database om, alleen als onze bewering waar is, 5 seconden te gaan wachten voordat hij antwoord geeft. Als we direct antwoord krijgen, was de bewering blijkbaar onwaar. Als het verzoek lang duurt, weten we dat de bewering waar was!

2. Run & Investigate

Start het lab. Je ziet de vertrouwde dropdown-box (waar je niet vrij in kunt typen).

Laden...

3. Modify & Make (Aanpassen & Maken)

Omdat de backend user_id = $id verwerkt (zonder aanhalingstekens), kunnen we een wiskundige Time-Based aanval toevoegen via de Developer Tools of je browser.

Tip

Druk op F12. Inspecteer het formulier, en verander de value="1" van een van de opties. Gebruik het SQL commando SLEEP(5) of soortgelijke vertragings-commando's afhankelijk van de database.

Antwoord

Verander de optie naar: <option value="1 AND SLEEP(5)"> Selecteer deze in de webpagina en klik Submit. De browser wacht nu 5 volle seconden voordat de webpagina weer verschijnt! Je hebt succesvol de wachttijd gemanipuleerd en daarmee bewijs geleverd dat er een blind gat in de database zit.

4. ✓ Wat moest je zien?

Controle
  • Bij een normaal ID (1) krijg je vrijwel direct een respons.
  • Bij payload 1 AND SLEEP(5) blijft het lab 5 volle seconden hangen voordat er iets verschijnt — dat is de timing-bevestiging.
  • In F12 Network zie je dat de POST-request inderdaad ~5 seconden in "Pending" status staat.

Geen vertraging? Dan veranderde je de zichtbare tekst tussen de <option>-tags in plaats van het value-attribuut. Pas in F12 Elements de value="…" zelf aan.