Tutorial SQL Injection em INSERT INTO Ola a todos (e a quanto tempo nao nos vemos, nao e?).Vou mostrar aqui uma tecnica interessante para fazer SQL Injection baseado em Inserts.E bom que voce saiba algo sobre a linguagem SQL e como e um ataque de SQLi comum, ou o conteudo ficara mais complicado.Muitas vezes voce encontra um alvo vulneravel a injecao de SQL, mas em uma query baseada em insert.Isto e muito comum em formularios de comentario, cadastros e livros de visitas.Por exemplo: digamos que o alvo tenha o seguinte formulario de cadastro:1234Nome:E-mail:Login:Senha:Entao, ao inserir uma aspa em um campo, notamos que nos veio um erro de SQL ou nos nao fomos cadastrados. Isto provavelmente quer dizer que ele esta vulneravel.Temos varias maneiras para atacar. Vou mostrar apenas algumas.Outras voce pode ir em busca, na internet ou mesmo usar um pouco da criatividade e conhecimento em SQL pra montar suas proprias maneiras. Mas, primeiramente, vamos a logica:Saiba que se os dados que serao inseridos pelo comando INSERT INTO estao entre aspas, como no exemplo abaixo:1INSERT INTO tabela VALUES ('$_POST[nome]', '$_POST[email]')Um simples escapamento de aspas pode nos barrar. Teremos que contar com a falta disso.Vamos precisar descobrir a quantidade de colunas que estamos lidando (as que estao sendo inseridas). Para tanto, colocaremos o seguinte no campo vulneravel (repare os espacos ao final dos ):123', '1');--', '1', '2');--', '1', '2', '3');--Vamos inserindo um campo a mais gradativamente e observar quando nao ha erro retornado ou quando somos cadastrados corretamente. Sim, isso e mais demorado. Digamos que estejamos lidando com 1 coluna vulneravel.Assim, vamos procurar identificar o que e aquela coluna. Como inserimos apenas o algarismo 1, procuramos no campo do perfil onde esta este 1. Ali sera nossa chave.Agora o ataque e baseado em consultas secundarias, com resultados unicos (apenas uma coluna e uma linha por vez) e impressos em uma dessas colunas. Por exemplo, vamos obter a versao do SQL, pra saber se podemos utilizar o banco de dados information_schema (a versao precisa ser igual ou superior a 5, quando isto foi implementado). Veja o que vamos inserir no campo vulneravel:1', version());--Vamos no mesmo local onde vimos o algarismo 1 e veremos a versao do MySQL. Supomos que tenha o information_schema (ou teriamos que ir chutando o nome das tabelas e colunas). A query secundaria ficara entre parentesis. Como ja dito, deve ter apenas uma coluna e uma linha. Voce pode unir varias colunas em uma, usando funcoes como concat(), concat_ws() e group_concat().1,' (select group_concat(table_name) from information_schema.tables where table_schema=database() limit 0,1));--Mas pode ocorrer que voce nao possua acesso direto aos dados das colunas vulneraveis. Neste caso, voce pode tentar usar o INTO OUTFILE pra exportar os dados para um arquivo. E necessario ter privilegios para tal.E necessario tambem saber a localizacao fisica do servidor. Voce pode procurar isso em um erro. Saia a procura de erros, que se parecam com:1(Tipo do erro): (Descricao) in /home/localizacao/do/site/arquivo.php on line XIsso e com voce. Saia procurando por erros em todos os cantos do site. E melhor ainda encontrar diretorios de uploads (ja que possuem permissoes de