Estoy tratando de enumerar una base de datos, creada específicamente con el propósito de aprender inyecciones SQL. Estoy tratando de descubrir el número de columnas que una declaración de selección particular podría estar usando. Lo hago por "Ordinal" ordenando el conjunto de resultados. Entonces, comienzo con ORDER BY 1, .. BY 2, y así sucesivamente hasta que obtengo un error al devolver 'Columnas desconocidas'. Ahora, para una inyección como esta:
localhost/sqli?id=2' order by 7 AND '1
La declaración SQL resultante es:
mysql> SELECT * FROM table_name where id='2' order by 7 and '1';
Esto devuelve un conjunto de resultados, pero esperaba que arrojara un error al devolver "unknown column '7' in 'order clause' ".
¿Por qué no arroja el error? La tabla con la que estoy trabajando tiene solo 3 columnas.