SQL Injection
Trabalho Escolar: SQL Injection. Pesquise 861.000+ trabalhos acadêmicosPor: Ederbalbino • 24/9/2013 • 406 Palavras (2 Páginas) • 452 Visualizações
Passo 2
Exemplo 1
Injecção de comandos SQL
Os ataques por injecção de comandos SQL são ataques que visam os sites web apoiando-se em bases de dados relacionais.
Neste tipo de site, os parâmetros são passados à base de dados sob a forma de um pedido SQL.Assim, se o projectista não efectuar nenhum controlo sobre os parâmetros passados no pedido SQL, é possível que um pirata altere o pedido a fim de aceder ao conjunto da base de dados, ou mesmo alterar o conteúdo.
Com efeito, certos caracteres permitem conectar vários pedidos SQL ou ignorar a sequência do pedido. Assim, inserindo este tipo de carácter no pedido, um pirata pode potencialmente executar o pedido à sua escolha.
Vejamos o seguinte pedido, esperando como parâmetro um nome de utilizador:
SELECT * FROM utilisateurs WHERE nom="$nom";
Basta que um pirata introduza um nome como “toto” OR 1=1 OR nome = " titi” para que o pedido se torne no seguinte:
SELECT * FROM utilisateurs WHERE nom="toto" OR 1=1 OR nom ="titi";
Assim, com o pedido acima, a cláusula WHERE sempre é realizada, que significa que devolverá os registos que correspondem a todos os utilizadores.
Exemplo 2
O ataque SQL Injection
Para ilustrar o conceito de SQL Injection, vamos considerar o mesmo exemplo
anterior, mas dessa vez um atacante tentará acessar o sistema como usuário jose e
sem saber a verdadeira senha deste usuário.
Conforme fizemos no exemplo anterior, substituindo os valores de "login" por jose e
"senha" pela string xxxx' OR TRUE -- , desta forma, temos o seguinte comando SQL:
O servidor vai avaliar o comando SQL da seguinte forma:
Essa consulta vai retornar todas as linhas da tabela usuarios. Assim, como o número
de resultados da consulta é maior que zero (ver "LINHA IMPORTANTE"),
o atacante conseguirá efetuar o login como jose.
Isto foi possível pois o valor de entrada informado nos campos "login" e "senha" não
receberam o tratamento devido. Diversos outros tipos de ataque via SQL Injection são
possíveis, como retornar dados de outros usuários, listar tabelas que um usuário não
tem acesso, apagar informações de uma tabela, inserir informações em uma tabela,
dentre vários outros.
SELECT * FROM usuarios WHERE login = 'jose' AND senha = 'xxxx' OR
TRUE
...