last day (14 days later) » 

1:34 AM
0
Q: Injetar código formulário SQL

ZebraDoMalSe alguém tem esse código: $nome = $_POST['nome']; $inserting = " INSERT INTO alunos (nome) VALUES ('$nome') "; if (mysqli_query ($conec, $inserting)) { echo "Os dados foram salvos com sucesso"; } else { echo "Ocorreu algum erro"; } Sabe-se que $_POST['nome'] guarda o valor ...

 
Até tirei o exemplo ali, mas só complementando, o cara depois desse meu código poderia dar comandos, exibir por exemplo uma string com o código da página (caso tivesse permissão)...
Não entendi qual a lógica disso, bfavaretto.
 
Sua query está ficando assim: INSERT INTO alunos (nome) VALUES ('PalavraQualquer')";--') quando deveria ser assim:INSERT INTO alunos (nome) VALUES ('PalavraQualquer'); --')
 
Mas se eu tirar a aspa dupla, não vou fechar a aspa do $inserting = "
 
Nao tem como vc mexer com a parte PHP, vc só conegue mexer na parte SQL. O que o PHP faz é tirar o $nome da string e colocar o que vc digitou no form no lugar.
 
Bacco, é isso que eu to querendo entender. Como é feita a leitura para que aquela aspa simples não feche o VALUES('
 
1:34 AM
INSERT INTO alunos (nome) VALUES (' tudo o que vc digitar cai aqui no meio ') e vai ser enviado pro MySQL exatamente como está.
 
Mas se eu digitar OI' não deveria fechar aquela aspa simples do VALUES não?
 
Vai fechar, mas ja tem uma fechando, por isso se usa o -- no fim da linha do injection.
Oi
Se vc digitar OI' o SQL vai ficar assim: INSERT INTO alunos (nome) VALUES ('OI'')
 
Sua query está ficando assim: INSERT INTO alunos (nome) VALUES ('PalavraQualquer')";--') quando deveria ser assim:INSERT INTO alunos (nome) VALUES ('PalavraQualquer'); --') – Bacco 9 minutos atrás
vc disse
mas tem uma aspa dupla
lá na frente
 
o -- indica comment
tudo que vem depois de -- é um comentário
 
$inserting = "INSERT INTO alunos (nome) VALUES ('$nome') ";
olha
eu sei
 
1:38 AM
vc ta olhando errado
vc ta olhando o PHP
esqueça o PHP.
o $nome nao é trocado no PHP, e sim na "memória"
quando ocorre a troca, ja nem existe mais essa linha aí que vc ta mostrando.
ela ja foi lida e convertida pelo PHP em um código interno.
no momento da troca só existe isso:
INSERT INTO alunos (nome) VALUES ('')
e o $nome é posto entre as aspas.
 
mas então seria possível eu fazer o que tinha pensado?
 
PalavraQualquer'); DROP TABLE alunos ;--
pronto, se o MySQLI aceitar mais de um comando por linha, acabou a tabela alunos.
 
aham
 
pq vai ficar assim: INSERT INTO alunos (nome) VALUES ('PalavraQualquer'); DROP TABLE alunos ; --')
 
mas e colocar php ali nao rola né?
 
1:41 AM
nao
 
tipo pra eu puxar um arquivo e dar echo
 
nao tem sentido, justo pelo que eu disse.
 
sim
 
no momento em que a troca acontece, o PHP ja era
 
muito bom
cara, isso é foda!
hauhaha
muito obrigado pela explanação
 
1:42 AM
claro que eu simplifiquei à beça a explicação, mas imagino que vc pegou a idéia
 
sim
 
e eu entendo que a primeira vista vc tava imaginando sua string naquela linha de código
 
aham.
 
como se fosse parte dela, mas como vc ja percebeu, nao é assim.
agora, em PHP da pra fazer umas doideiras com $$variavel
mas é outro assunto.
Exemplo:
$nome=4
$idade=10
$xyz = 'nome'
echo $$xyz
Saída: 4
 
sim
conhecia
 
1:44 AM
mas é o mais perto do que vc falou que eu consigo imaginar.
e mesmo assim, nao dá pra por um código qq lá
 
aquele tipo de caso poderia ter mais alguma falha?
nao entendo muito disso
mas acho interessante.
 
normalmente quando vc usa parameter binding, a troca acontece dentro do próprio engine do MySQL
entao nao vai ser interpretado errado, por isso que se recomenda
o binding em vez de passar como string.
 
ah sim
 
Por parameter binding, a troca acontece depois, da mesma forma que o PHP troca depois de interpretado, o SQL vai fazer o binding depois que ja entendeu a query
por isso que o binding é seguro.
 
entendi
 
1:48 AM
Por outro lado, vc pode fazer o escape_string, que apesar de ser processado antes
ao menos ele "poe" as barras invertidas
na string onde tiver caractere "perigoso", como aspas etc.
 
ou regex né
 
eu acho besteira regex pra isso
pq a função de escape do mysqli ja foi feita pra isso
e quando o sistema é atualizado, ela tambem vai ser
pra versoes mais novas etc.
 
é, no fim da quase na mesma...
 
Com regex vc vai estar usando uma função desnecessariamente mais complexa, e vai ter que ficar mantendo.
regra geral do regex: só use quando nao conseguir jeito melhor :)
regex até que fica "bonitinho", curtinho etc
mas operaçoes de string sao quase sempre mais eficientes.
(mesmo que o código fique mais "deselegante")
 
Verdade! kkk (por isso eu gosto de usar). você trabalha com isso?
 
1:52 AM
Eu desenvolvo software com um enfoque maior pra desktop, mas tb faço coisas para web.
 
eu to no ensino médio ainda...
vestibular fim de ano to numa dúvida cruel
de qual curso fazer
 
hehehe, nao decidiu a area ainda?
 
mercado pra sua área é bom?
exatas, apenas isso
 
o irônico é que eu curso Direito, com TI eu trabalho faz mais de 20 anos, mas sou autodidata.
 
eng. civil, eng. produção, ccomputação, eng. elétrica, algo do tipo.
também reflito sobre isso
 
1:55 AM
de qq forma, TI sempre vai ter mercado.
 
se eu aprendo sozinho
nao precisaria cursar...
 
Uma coisa eu digo, se vc procurar um emprego na área de TI, o diploma ainda faz muita diferença.
 
mas diploma também acho que muda algo né.
aham
isso que eu imagino
 
Tenho um conhecido que é autodidata, e é o melhor programador da empresa que ele trabalha, só que agora ele está tendo que fazer um curso pra poder ser promovido.
O que é uma piada, pq ele ja é melhor que os analistas formados, mas sem o diploma, nao podem contratar :)
digo, promover.
 
mas quanto ao salário, é bom?
porque eu nao confio em nada daqueles guias
 
1:57 AM
ah, varia muito de empresa pra empresa, regiao, etc.
 
de profissões
 
Eu não saberia te dizer, sempre atendi como autônomo, até ter meu próprio CNPJ.
 
compreendo.
 
Bom, por falar nisso, preciso fazer coisas por aqui. Quando a gente trabalha pra gente mesmo, não existe horário :)
existe prazo hehehe;
 
cara, muito obrigado pelas informações.
 
2:01 AM
Qq hora falamos mais. Dê uma boa pesquisada na área, e tao importante quanto salário, é fazer o que gosta.
 
Até mais
 
Mas o salário é importante sim, não vá nessa onda que só fazer o que gosta basta, pq na hora que vc chega no supermercado fazer a sua compra a moça do caixa nao quer nem saber se vc tá feliz ou nao :)
ela quer o din-din.
Até mais!
 
Vou acabar fazendo isso mesmo (o que gosto), mas é triste trabalhar ganhando pouco...
huahuau
 
Trabalhe ganhando bem, e se precisar deixe pra fazer o que gosta quando estiver com a vida ganha. Se vc achar que tem condição de se dedicar de verdade, pense em concurso público.
Ao menos por aqui, os bons salarios são em cargos públicos.
 
parece muito distante. Mas já penso nisso. Tenho 17 ainda.
 
2:04 AM
Falo isso, pq pra coisa publica, o diploma geralmente é necessário.
Bom, outra hora conversamos. Dê uma boa pesquisada nas opções.
 
é farei isso... Valeu!
 
até mais.
 
 

last day (14 days later) »