utilizado por alguns web masters. Colocando-se um sinal de arroba (@) atras da funcao que pega os dados, os erros que esta funcao poderia exibir sao ocultos. Normalmente, isso da uma certa impressao de seguranca ao web master que nao entende as possibilidades da Blind SQL Injection.O que fazemos na Blind SQL e utilizar o operador AND para comparar o resultado de uma query com o ID, e retornar os valores booleanos TRUE ou FALSE.Para descobrir a vulnerabilidade, utilizamos de cara o AND:http://site.com.br/noticia.php?id=1 and 1=1http://site.com.br/noticia.php?id=1 and 0=1O primeiro, caso o site esteja vulneravel, retorna o valor TRUE ja que 1 sempre e igual a 1 e exibe a pagina corretamente. No segundo endereco ficticio, o site nao retornaria uma pagina coerente com o site, ja que o resultado sempre e FALSE.Concluimos que o nosso site ficticio esta sim vulneravel a Blind SQL e vamos partir para cima dele. Como e um portal de noticias que usa IDs para linkar as noticias e e um site brasileiro que fala portugues e provavel que a tabela que guarda as noticias seja algo como noticia, noticias, noti, news e muitos outros padroes de administracao.Para explorar o banco de dados, nos vamos utilizar o AND da mesma forma, porem, vamos verificar se um e igual ao resultado de alguma query. Basicamente, e assim que funciona Blind SQL.O problema de sempre e que nao conseguimos visualizar nomes de databases, tabelas e colunas via information_schema ou via sysobjects, e sempre temos que chutar o nome...Primeiramente, vamos descobrir o nome de algumas tabelas.http://site.com.br/noticias.php?id=1 and 1=(select * from noticias)Neste caso, seguindo as tabelas que usei como exemplo anteriormente, a pagina seria exibida normalmente, indicando que de fato existe a tabela noticias. Sabendo disso, poderiamos testar n nomes de tabelas para descobrir qual a tabela que guarda os nomes de usuarios e senhas. Nao muda muita coisa para capturar nomes de colunas:http://site.com.br/noticias.php?id= 1 and 1=(select texto from noticias)Se a coluna texto existir, entao a pagina da noticia 1 e exibida.Agora ja poderiamos efetuar um defacement:http://site.com.br/noticias.php?id=1000 and 1=(update noticias insert set texto=6SAOLAMMAH where noticias.id=1000)Provavelmente, a pagina ja sera exibida com o novo texto.Mas como vivo dizendo, para fins didaticos, o defacement nao acrescenta nada.Caso esteja interessado em expor suas ideias, tente fazer algum outro tipo de protesto...Agora o objetivo e capturar alguma conta e senha de algum usuario.Depois de algumas tentativas, descobrimos a tabela que contem os nomes de usuarios, senhas e outras informacoes que nao sao tao interessantes para nos, cujo nome e login.Descobrimos tambem que ela tem as colunas user, pass e privileges por metodos citados anteriormente.Para descobrir o conteudo de alguma coluna e um pouco mais dificil, visto que temos que testar os caracteres um por um em valor ASCII.Vamos utilizar entao as funcoes ascii() e substring().Supondo que eu tenha algum nome de usuario em maos, qualquer que seja o meio pelo qual o consegui, basta eu pegar a senha. No exemplo, o usuario seria vitima e a suposta senha, senha, sem numeros e de apenas letras. O correto seria utilizar letras maiusculas e minusculas em senhas, mas isso