sql >> Database teknologi >  >> RDS >> Mysql

Siden er blevet hacket via SQL Injection

Det ligner et overløbsangreb . De UNION -ed med din eksisterende forespørgsel. erstatter alle dine %20 med (mellemrum), da dets url-kodede giver:

=-999.9 UNION ALL SELECT CONCAT(0x7e,0x27,Hex(cast(database() as char)),0x27,0x7e),0x31303235343830303536,0x31303235343830303536,0x31303235343830303536-

bryde det ned:

  1. den =-999.9 afslutter bare din aktuelle forespørgsel
  2. 0x31303235343830303536 er NULL - de matcher bare antallet af kolonner i din eksisterende forespørgsel. Hvis du havde SELECT * FROM users og users havde 4 kolonner, UNION skal også have 4 kolonner. Som et resultat brugte de bare `NULL-værdier til at udfylde disse kolonner.
  3. den virkelige forvirring er i CONCAT() . De kombinerer 126, 39, databasenavn som hex-værdi, 39 og 126
  4. -- er en mysql-kommentar - den ignorerer resten af ​​din forespørgsel efter

At dømme ud fra dette angreb formoder jeg, at du ikke ombryder input i mysql_real_escape_string() , som gjorde det muligt for angrebet at springe ud af din forespørgsel og udføre deres egen.

Se owasp.org for mere information.



  1. Er indre led det samme som equi-join?

  2. Sådan finder du pg_config-stien

  3. mysql:hvorfor at sammenligne en 'streng' med 0 giver sand?

  4. Fjern dublet fra en tabel