0

queria entender essa sintaxe de mysql !

criado por Jefersson Nathan de Oliveria Chaves em 11/08/2011 3:14pm
Em um artigo sobre sql injection trazia uma query avançada usando algumas funçoes que eunão conheço:


http://server/?id=(1)and(select 1 from(select count(*),concat((select table_name from information_schema.tables limit 1,1),floor(rand(0)*2))x from information_schema.tables+group by x)a)--

executei essa parte:
mysql> floor(rand(0)*2))x from+information_schema.tables group by x

+----+---+
| a | x |
+----+---+
| 37 | 0 |
| 23 | 1 |
+----+---+
2 rows in set (0.00 sec)

Os resultados sempre são 0 ou 1.
Acho que por causa do floor() que 'arredonda' a numero;
sei que a função rand() gera números aleatórios;

Isso tem alguma coisa a ver com binário ou não ?

O que estou procurando é uma explicação!
ficaria muito agradecido em entender essa query!

desde já agradeço!

[]'s

Lista de Respostas:

0
11/08/2011 11:14pm
(~12 anos atrás)
Cara
Sem as tabelas não dá pra entender muito bem do que se trata...
O lance é o seguinte
Você tem algo grande

http://server/?id=(1)and(select 1 from(select count(*),concat((select table_name from information_schema.tables limit 1,1),floor(rand(0)*2))x from information_schema.tables+group by x)a)--

E você está com dificuldade de entender o que é.
Então você divide este problema em várias partes e vai tentando entender cada parte isoladamente, para depois tentar entender no contexto geral.
Exemplo, floor() é uma função.
Assim como rand() também é uma função, concat() também é outra e count() também.
Então o que você faz
Você vai lá no google e pesquisa
"MySQL rand()"
Apenas isto, e você vai achar muitas coisas falando a respeito.
Porém, existem outras coisas que não são funções.
Como o SELECT que é uma palavra reservada da qual faz parte da linguagem.
Se você não conhece esta parte, então o jeito é você estudar.
Procurar conhecer um pouco de SQL para saber ao menos o básico, para depois, ir se aprimorando!

0
12/08/2011 9:35am
(~12 anos atrás)
Isso eu sei marcos! Eu também trabalho com Banco de Dados!
e como expliquei na pergunta também sei o que o rand() e o floor() fazem,
porem ainda espero uma resposta que me explique exatamente o que ocorre nessa query !

Mais mesmo assim obrigado ^^

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)