Instrutor: Agora, para tentar descobrir as injeções de SQL,
você precisa navegar pelo seu destino
e tentar quebrar cada página.
Portanto, sempre que você vir uma
caixa de texto ou um parâmetro neste
formulário, por exemplo, página. php então algo igual a alguma coisa,
tente injetar coisas aqui.
Portanto, tente usar uma aspas
simples, tente usar e e, ou a ordem por declaração, para
quebrar a página e fazer com que pareça diferente.
Então, eu vou mostrar aqui um exemplo.
E eu vou entrar na página de login primeiro, bem aqui.
E está me pedindo para entrar agora.
Mas eu realmente me registrei com meu próprio nome.
Então você pode simplesmente entrar aqui e se registrar.
Eu tenho um nome de usuário
chamado Zaid e uma senha com um dois três quatro cinco seis.
Então, primeiro, vamos apenas ...
Vou fazer login apenas para mostrar a você.
Meu nome de usuário
é Zaid e minha senha é um dois três quatro cinco seis.
E agora estou logado como
Zaid e minha assinatura era aa.
Na verdade, não é nada, apenas como um teste.
Então, vou sair e
estamos de volta à página de login.
Bem aqui, temos a página para que
você possa tentar injetar isso.
Mas entraremos nisso mais tarde, então.
No momento,
estamos tendo um exemplo de injeção em caixas de texto.
Assim, você pode tentar inserir o nome
e a senha.
Então, vou colocar meu nome como Zaid
e colocar uma única citação.
Então, estou colocando esse sinal na minha senha.
Então, vamos ver se podemos quebrá-lo.
E como você pode ver
agora, há um erro sendo exibido para nós.
E não parece um erro normal,
parece um erro no banco de dados.
E normalmente você terá muita sorte se receber
um erro como este.
Agora, geralmente, o erro não será tão informativo quanto isso.
Às vezes, você verá que
a página não está funcionando como esperado,
como você espera.
Às vezes, será apenas uma
página que não parece como deveria.
Por exemplo, se for
uma página de notícias, talvez o artigo esteja
faltando ou, se for um blog, haverá uma das postagens
ausentes ou diferentes tipos de postagens.
Então, você precisa ficar de olho no que está mudando.
Neste exemplo, estamos realmente recebendo um erro muito bom.
Está nos dizendo qual arquivo
ele possui e nos dizendo que há um erro na declaração.
E o erro próximo às aspas que adicionamos.
E também nos diz a declaração que está sendo executada.
Isso é realmente bom para aprender.
Porque agora podemos ver qual é a
afirmação de que o sistema está tentando executar.
E os sistemas tentando fazer um select *.
Por isso, está tentando selecionar tudo, desde contas, onde o
nome de usuário é igual a
Zaid e a senha é igual a uma única cotação.
E observe que o sistema em que
o aplicativo Web já está adicionando
aspas ao redor do nome.
Então, quando eu disse Zaid, ele adicionou Zaid entre duas aspas.
E acrescentou a aspas
simples que eu adicionei entre outras duas aspas.
É por isso que temos três citações aqui.
Então, com isso, podemos,
como 70% do site de destino, ter uma
injeção de SQL.
Ainda não temos
certeza se ele pode executar o que queremos.
Então, posso realmente
injetar código e executá-lo?
Vamos ver se podemos fazer isso.
Então, o nome de usuário será Zaid novamente.
E o que vou
fazer com a senha, vou colocar minha senha.
Então eu vou colocar um dois três quatro cinco
seis e depois fechá-lo.
Então, vou lhe dizer por
que estou fechando, porque a declaração atual
através do sistema é
select * from, to Zaid and, é
igual a.
E vai abrir uma única citação por si só.
Então vamos chamar essa senha S.
Então, estamos tratando isso de uma variável.
E leva o que eu colocar aqui, o
que eu vou colocar nesta caixa.
E vai inseri-lo em vez da senha S, que
é uma variável.
Então, eu estou apenas dando
uma idéia, para que você possa imaginar isso acontecendo.
Então está pegando o que eu coloco lá, e
vai colocar entre duas aspas simples.
E será inserido lá e
executado no sistema.
Então, o
que estou fazendo é colocar um dois três
quatro cinco seis e adicionar a citação.
Então, o que eu vou fazer agora,
o código será assim.
Então, isso vai selecionar isso, e a senha
é igual a isso.
E eu tenho duas citações agora, ok.
E então o que eu
vou fazer é,
eu vou dizer e, um é igual a um.
Então um é igual a um.
E só estou tentando
ver se vai executar o que quero que faça.
Portanto, minha declaração agora é: será Select *
de contas, onde o nome de usuário é
igual a Zaid e a
senha é igual a um dois três quatro cinco seis.
E note, eu mesmo vou inserir isso,
e iguais a um.
Um problema que o sistema vai reclamar
é que temos uma cotação
extra aqui, porque eu mesmo vou inseri-la na caixa de texto.
Então, vai reclamar
disso, vai dizer que esse é um
código aberto e nunca foi fechado.
Então, o que vou fazer é adicionar o comentário.
E quando você adiciona um
comentário, basicamente tudo o que aparece após o
comentário não será executado.
Vou usar o hash como comentário.
Então, qualquer coisa que aparecer após o hash
que o sistema irá ignorar.
Então, eu vou injetar agora, será isso, e
um é igual a um e isso, então, como
eu disse, geralmente o que você
tem aqui, você cortou sua senha
ou, dependendo do nome do
programa, apenas imaginando isto.
E eu vou inserir isso dentro.
Então, quando você faz isso e o insere dentro, é
assim que o código será.
Então, parecerá o nome de usuário certo,
a senha correta
e um é igual a um, o que é verdadeiro.
E então
não vai, vai ignorar esta citação aqui.
Portanto, se
colarmos isso, poderemos fazer login.
Deve permitir-me entrar.
E perfeito, conseguimos fazer o login e o nome de usuário é Zaid.
Até agora, não fizemos nada.
Mas isso nos mostra que ele está executando nosso código?
Vamos tentar uma coisa diferente.
Agora, vamos tentar adicionar uma declaração falsa.
Então fizemos um igual, e
isso foi correto e foi executado quando queríamos.
Vamos tentar um é igual a dois.
E isso é falso.
Então, eu tenho a senha correta.
E eu tenho o nome de
usuário certo e um é igual a dois.
E isso deve estar errado, porque é falso,
um não é igual a dois
e eu estou usando um e então tudo tem que ser verdade.
Portanto, isso deve me
dar um erro, mesmo que eu coloque o nome de
usuário correto e a senha correta.
Então, eu estou colocando um dois três quatro cinco
seis e um igual a dois.
Então vai ser como, oh, isso está errado.
E como você pode ver, isso me deu um erro
de autenticação, nome de usuário
ou senha incorretos, mesmo que eu tenha recebido a senha
e o nome de usuário corretos.
Portanto, isso confirma que este site está realmente injetando
o que queremos na senha.
Portanto, podemos usar o campo de senha para injetar código SQL.
E sempre estará neste formulário.
Então, vamos colocar uma
senha e você vai colocar seu código aqui,
então eu vou colocar no código de capital aqui.
Porque vamos colocar uma senha, fechar a cotação e
depois colocar o código que queremos
executar no sistema
aqui, e ele será executado no sistema de destino.