SQL como portais de noticias por exemplo. Normalmente nestes portais; para facilitar o acesso, cada noticia recebe um ID e e a partir dele que injetaremos comandos SQL.Sendo assim, as das muitas strings de busca no Google seriam:inurl:noticias.php?id=inurl:noticia.php?id=inurl:ver_noticia.php?id=inurl:ver.php?id=inurl:abrir.php?id=inurl:mostrar.php?id=Estes sao so pequenos exemplos. (Lembrando que tambem existem paginas vulneraveis em ASP, sendo assim, a string deve ser adaptada).Para descobrir a vulnerabilidade, basta uma aspa simples ( ) atras do ?id=.Se o sistema estiver utilizando MySQL e estiver vulneravel, o erro sera este:-You have an error in your SQL syntax; check the manual that corresponds to yourMySQL server version for the right syntax to use near at line 1.-Porem, se estiver utilizando SQL Server, este sera o erro:-Unclosed quotation mark after the character string .-Se nenhum erro for exibido, simplesmente a pagina nao esta vulneravel ou a abordagem deve ser melhor estruturada, ou seja, feita de meios diferentes. As vezes, nao serao exibidos erros a partir da simples inclusao do apostrofo, mas serao de outros modos.Algumas dicas sao apagar o valor do ID e por o apostrofo, ou substituir o valor do ID por null, nao exibindo nenhuma noticia. Eu pessoalmente aprecio muito o null.Tambem pode acontecer de a pagina estar vulneravel, mas nao exibir esse erro, sendo necessaria, como ja disse, uma abordagem melhor feita.Bom, nao se preocupe se nao encontrar uma pagina vulneravel na primeira tentativa, afinal, SQL Injection, com todos os seus modos de injecao, e a segunda vulnerabilidade mais popular em paginas da internet, perdendo apenas para XSS.Paginas vulneraveis a SQL sao extremamente comuns!Expliquemos como faremos o sistema exibir um erro utilizando a aspa simples.Pouparei a demasia nas explicacoes, ate porque ja abordei um pouco das SQL queries em outra ocasiao.Supondo que a query inicial seja:SELECT noticia, data, autor FROM database.noticias WHERE id=100E estamos pondo um apostrofo, esta sera a query:SELECT noticia, data, autor FROM database.noticias WHERE id=100O sistema vai tentar obter a noticia, a data, e o autor da noticia atraves da ID 100 e vai definir outra variavel sem nome com a aspa simples do proprio sistema, ou seja, estamos fazendo uma operacao impossivel, e por isso o sistema acusa o erro. Tanto e que o SQL Server acusa unclosed quotation, citacao aberta.Conceitos de Bancos de DadosDepois de encontrar uma pagina vulneravel, podemos comecar a explorar o banco de dados. Antes de explora-lo e necessario saber como funciona. Cada site pode ter uma ou mais conexoes de bancos de dados, cada banco de dado pode ter uma ou mais tabelas, e cada tabela e divida em linhas e colunas.Imagine que cada tabela e como uma planilha no Excel ou no Math.Note que nos exemplos desta pagina, a query pede as colunas noticia, data e autor, da tabela noticias no banco de dados database.Aprendendo SQLNas materias anteriores eu ja tinha abordado uma parte dos comandos que podemos utilizar em SQL e agora aqui estao mais alguns que serao necessarios para os nossos trabalhos:UNION e usado para combinar o resultado de SELECT;ORDER BY ordena as colunas utilizando como criterio uma coluna;HAVING tendo, ou seja, ser tiver certo criterio!Felizmente, na pratica