0

Como é feito um ataque SQLi

criado por Jefrey em 28/08/2011 3:22pm
Ataque básico
O ataque básico ocorre geralmente em formulários de login.
<?php 
# Aqui, a variável $user equivale ao dado do campo "user" no formulário. O mesmo ocorre com a senha. 
<?php 
# Aqui, a variável $user equivale ao dado do campo "user" no formulário. O mesmo ocorre com a senha. 
$user = $_POST['user']; 
$pass = $_POST['pass']; 

#Agora, da tabela "users", vamos ver se usuario e senha são correspondentes. 
$query = "SELECT * FROM users 
        WHERE user='{$user}' AND senha='{$senha}'";
O código acima é a representação básica de um sistema de login desprotegido. Note o perigo que é deixar este código em uma área de administração de um website:
Os dados do formulário são diretamente jogados na instrução SQL. Mas, e se, ao invés de login e senha, colocássemos mais instruções SQL?
Vamos colocar então a seguinte string:
' or 1='1
No campo da senha, que é o último. Então, a instrução SQL ficará assim:
SELECT * FROM users WHERE user = '' AND senha = '' or 1='1'
Então verificamos se o usuário e a senha se correspondem ou se 1 é igual a 1. Então, mesmo que o login e a senha estejam incorretos, como 1=1, efetuamos login normalmente.
Claro que há muito mais o que fazer. Com o SQLi é possível entrar em áreas privilegiadas, como a área de administração de um site, mas estudando um pouco mais, ainda apenas inserindo mais instruções SQL, também é possível ver todo o banco de dados, alterar dados e até estar no shell do servidor.

Comentários:

Nenhum comentário foi enviado ainda.

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)