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:
- den
=-999.9
afslutter bare din aktuelle forespørgsel 0x31303235343830303536
erNULL
- de matcher bare antallet af kolonner i din eksisterende forespørgsel. Hvis du havdeSELECT * FROM users
ogusers
havde 4 kolonner,UNION
skal også have 4 kolonner. Som et resultat brugte de bare `NULL-værdier til at udfylde disse kolonner.- den virkelige forvirring er i
CONCAT()
. De kombinerer 126, 39, databasenavn som hex-værdi, 39 og 126 --
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.