Conhecimento
básico de SQL É necessário um bom nível de conhecimento de SQL para entender e implementar a injeção de SQL. O assunto, que explicarei em breve, foi escrito com breves explicações apenas para fins de lembrete. Se você não conhece sql, será mais útil estudar sql de ....
Você deve responder e clicar em 'Curtir' para ver as informações ocultas contidas aqui.
É usado para selecionar dados do banco de dados.
SELECT coluna1, coluna2 FROM tabela
WHERE
SELECT coluna1, coluna2 FROM tabela WHERE coluna1 O valor do operador é um dos operadores
LIKE
Where. Pesquisa de acordo com o padrão especificado por uma coluna.
SELECT coluna1, coluna2 FROM tabela WHERE coluna LIKE padrão;
UPDATE
É utilizado para atualizar os registros da tabela.
UPDATE tabela SET coluna1=valor1, coluna2=valor2,... WHERE coluna=valor
INSERT INTO
Usado para inserir novos registros na tabela.
INSERT INTO tabela VALUES (valor1, valor2,...)
ALTER TABLE
Usado para inserir, modificar ou excluir colunas existentes em uma tabela.
ALTER TABLE tabela ADD coluna data_type
Tabela ALTER TABLE DROP COLUMN coluna
ALTER TABLE tabela MODIFY coluna data_type
UNION
Usado para combinar duas ou mais instruções SELECT.
SELECT coluna1, coluna2,... FROM tabela1 UNION SELECT coluna6, coluna7,... FROM tabela2
DROP
Usado para excluir tabela, banco de dados e índice.
Tabela DROP TABLE
DROP DATABASE banco de dados
ALTER TABLE tabela DROP INDEX índice (MySQL)
DROP INDEX índice (Oracle)
JOIN
Usado para combinar linhas de duas ou mais tabelas.
SELECT coluna1 FROM tabela1 {JOIN EXPRESSIONS} tabela2 ON tabela1.coluna=tabela2.coluna
INNER JOIN (ou apenas JOIN): Retorna todas as linhas porque há pelo menos uma correspondência em todas as tabelas unidas.
LEFT JOIN: Retorna as correspondências nas tabelas unidas à direita, juntamente com todas as linhas da tabela à esquerda.
RIGHT JOIN: Retorna correspondências nas tabelas unidas à esquerda, juntamente com todas as linhas da tabela à direita.
FULL JOIN: Retorna todas as linhas quando há correspondência em apenas uma das tabelas unidas.
-------------------------------------------------- -------------- ------------------------------------ ----------------------- ---------------------- ----------------------------------------------------- -------- ----------------------------------
O que é SQL Injection e o que pode ser feito com ela?
Injetar código em consultas SQL enviadas ao banco de dados usando um aplicativo, inesperado pelo autor do aplicativo, é chamado de injeção de sql. Ao alterar as consultas enviadas pelo aplicativo ao sistema de gerenciamento de banco de dados, os bancos de dados do sistema e todas as informações neles registradas podem ser lidos, alterados ou excluídos. Em ataques posteriores, o sistema pode ser bombardeado por meio do DBMS e conectado remotamente e o código pode ser executado na extensão permitida pelos privilégios do usuário.
Exemplos de Ataques Usando SQL Injection
O grupo de hackers D33DS Company vazou as informações de 453.000 clientes do yahoo que capturou realizando um ataque de injeção de SQL baseado em união.
MySql.com foi hackeado usando injeção Blind Sql. Os invasores publicaram os hashes de nome de usuário e senha na Internet.
Muitos sites israelenses, incluindo Coca Cola, Intel e BBC, foram invadidos por hackers paquistaneses usando injeção de SQL.
Cerca de 6,5 milhões de hashes de senha do LinkedIn vazaram online sem nomes de usuários.
-------------------------------------------------- -------------- ------------------------------------ ----------------------- ---------------------- ----------------------------------------------------- -------- ----------------------------------
Tipos de SQL Injection Por
método de extração de dados:
- Inband
- Out of band
Based na resposta do servidor:
- Injeção de SQL baseada em erro
- União
- Dupla
- Injeção de SQL cega
- Baseada em booleano - Baseada
em tempo Por
tipo de dados:
- Baseada em string - Baseada
em número inteiro
Inban: SQL usando a mesma conexão que o pontos de entrada no site são injeções.
Fora da banda:Injeções feitas usando um canal diferente dos pontos de entrada em sites. Isso é realizado usando instruções de gravação em arquivo.
Baseado em erro: Injeções feitas para causar erros. Após dar um erro, tanto a vulnerabilidade é assegurada quanto informações importantes sobre o sistema utilizado podem ser obtidas a partir da mensagem de erro. Esta informação pode ser usada para consultas posteriores.
União: É uma das consultas usadas em injeções de SQL baseadas em erro. As consultas de união são usadas para combinar duas ou mais instruções select.
Double: É um dos métodos de injeção SQL baseados em erro. Basicamente, este método está tentando dar um erro combinando duas consultas sql em uma única expressão de consulta.
Baseado em Booleano:São injeções de sql para consultas que são executadas com base no resultado da expressão lógica (Verdadeiro ou Falso).
Baseado em tempo: É outro método de injeção SQL cega. Como o resultado da consulta não é visível, é entendido com a ajuda de funções como sleep() benchmark() se a consulta está funcionando ou não.
Por Tipo de Dados: São as injeções feitas de acordo com o tipo de dados do valor do parâmetro onde se encontra a fraqueza. Pode ser inteiro ou string.
-------------------------------------------------- -------------- ------------------------------------ ----------------------- ---------------------- ----------------------------------------------------- -------- ----------------------------------
Usando o SQLMAP
Por fim, antes de finalizar a localização, mostrarei como utilizar a ferramenta mais utilizada em sql injeções e a localização terminará aqui. Sqlmap é uma ferramenta automática de injeção de sql desenvolvida com python. Ele tenta encontrar a injeção de sql no alvo especificado e usa essa fraqueza com os comandos que dou abaixo.
Opções básicas:
Especificando o destino:
-u URL, --url= URL
Especificando como conectar ao destino:
--data=DATA --threads=THREADS
Personalização de injeção:
-p TESTPARAMETER
--dbms=DBMS Para recuperar
informações do DBMS:
-- current- user DBMS visualizar usuários atuais
--current-db DBMS visualizar banco de dados atual
--usersenumerar usuários DBMS
--senhas enumerar hashes de senha de usuário DBMS
--dbs enumerar bancos de dados DBMS
--tabelas enumerar tabelas DBMS
--columns enumerar colunas de tabelas de banco de dados DBMS
--dump para baixar entradas de banco de dados DBMS
-D DB Enumerar banco de dados a ser enumerado
-T Tabela TDL para enumerar
-C COL Coluna para enumerar
-U USER Usuário para enumerar
EXEMPLO DE USO DE SQLMAP:
sqlmap -u http://xxx.xxxxxx.xxx --dbs --batch
NOTA:Se você estiver usando apenas a ferramenta SQLMAP, certifique-se de adicionar o comando --batch aos seus comandos, esse comando fará com que a ferramenta seja executada nos valores padrão sem fazer perguntas durante a fase de execução da ferramenta.
-------------------------------------------------- -------------- ------------------------------------ ----------------------- ---------------------- ----------------------------------------------------- -------- ----------------------------------
NOTA: Não tenho opinião profissional sobre este assunto, não tenho conhecimento. Eu só queria contar algumas das coisas que li de uma maneira simples.