Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SQL Injection

Esta aplicação foi feita atendendo os requisitos da atividade avaliativa da matéria de Banco de Dados 2 do curso de Ciência da Computação – UNIFEI.

Dupla:

Flavio Mota Gomes -- 2018005379

Rafael Antunes Vieira -- 2018000980

Descrição dos arquivos

  • index.php

    Contem o código em HTML, responsavel por capturar o login e senha do usuario e passar para o arquivo login.php.
  • login.php

    Contem o código em PHP, responsavel por fazer a conexão com o banco.
  • Style.css

    Contem o código em CSS, responsavel pelo estilo de cores, imagens e fonte da pagina da aplicação.
  • SQLInjection.backup

    Arquivo com o banco de dados do PostgreSQL, disponibilizado para restaurar e testar a aplicação.

Como Funciona

O SQL Injection consiste em uma técnica de injeção de código com capacidade de acessar ao banco de dados, o que representa um risco. Ocorre, geralmente, durante a entrada de um usuário. Quando solicita-se ao usuário a entrada no sistema, como um nome/senha, o usuário fornece, em vez disso, uma instrução em SQL que será executada no banco de dados sem o conhecimento do administrador do banco.

No arquivo login.php, o login será concretizado se o usuário e senha digitados corresponderem a um dos pares usuário-senha cadastrados no banco de dados. Para realizar essa conferência, há uma query na aplicação que, por meio de um SELECT, varre o banco para verificar os pares usuário-senha cadastrados. Essa query é da seguinte forma:

SELECT * FROM cliente WHERE nome='$usuario' AND senha='$senha'

As variáveis $usuario e $senha são recebidas na página login.php e correspondem ao que for digitado pelo usuário da aplicação. Há apenas um usuário cadastrado, "teste", com senha "12345". É possível realizar login utilizando-o. Contudo, ao deixar o campo de login em branco e digitar 'or''='no campo de senha, manipula-se a SQL, que será lida da seguinte forma:

SELECT * FROM cliente WHERE nome='' AND senha=''or''=''

O SQL Injection ocorre, portanto, porque há uma manipulação da SQL através do uso do caracter ', de modo que nome e senha estão vazios e '' = '', ou seja, a aplicação permitirá o login porque vazio é igual a vazio.

Como Executar a aplicação:

1. Primeiramente precisamos criar uma database nova com o nome sqlinjection. Depois, restaure o arquivo SQLInjection.backup no database sqlinjection que foi criado.

imagemsql

2. Após a configuração do PostgreSQL, abra o arquivo login.php e na linha 17 coloque o host e a porta do servidor. Na linha 18 coloque o usuário e na linha 19 coloque a senha de acesso do servidor onde você restaurou o databese.

Imagem1sqli

3. Após ter mostrado o caminho do PostgreSQL para a aplicação, vamos instalar o servidor APACHE para executar a aplicação. Recomendamos instalar a ferramenta XAMPP para ter acesso ao servidor;

imagem2sqli

4. Agora, iremos configurar o servidor e colocar os arquivos dentro dele para executar. Procure pelo arquivo php.ini na pasta do XAMPP. Na instalação padrão do sistema Windows, ela se encontra em C:\xampp\php.

imagem3sqli

5. Abra com o bloco de notas e procure pelo comando ;extension=pgsql e retire o ; e salve o arquivo.

imagem4sqli

6. Copie os arquivos index.php, Style.css, login.php e a pasta image para a pasta chamada htdocs que se encontra dentro da pasta onde está instalado o XAMPP. Na instalação padrão do sistema Windows, ela se encontra em C:\xampp\htdocs.

7. Para finalizar, ligue o servidor APACHE no XAMPP:

imagem5sqli

8. Após ligar o servidor, abra o navegador e digite o endereço: http://localhost/index.php (esse endereço pode variar de acordo com o nome do projeto criado):

imagem6sqli

Pronto! Agora pode se replicar a falha SQL Ingection conforme explicado no tópico Como funciona.

About

Este repositório contém uma aplicação que explora a falha de segurança chamada SQL Injection no servidor PostgreSQL.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages