Para que no te dé error has de poner una de las tablas detrás del ORDER BY, pues si no, estás pasándole como argumento a dicha función ", u.user_name LIMIT 0, 40-".
Si el código del SQL Injection comienza justo detrás del ORDER BY, lo primero que tendrás que poner será una tabla (por ejemplo, m.mana), y a raíz de ahí, realizar tus consultas mediante UNION SELECT.
Y ahí es donde radica mi problema xD Yo estoy probando otro SQL Injection muy similar a este, sobre Invision Power Board. Este es el PoC:
http://www.example.com/forums/index.php?act=Members&max_results=50&st=SQL_INJECTIONAl introducir esto en el navegador, sobre un foro vulnerable, se obtienen los siguientes resultados:
mySQL query error: SELECT m.columnas
FROM la_tabla
ORDER BY m.columnas asc
LIMIT SQL_INJECTION,50
mySQL error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQL_INJECTION,50' at line 8
Esto me hizo deducir que la inyección se producía sobre el primer parámetro de LIMIT. El segundo parámetro, es el que se le atribuye en "max_results" en el navegador. Por tanto (y dándole muchas vueltas al tema mareado por google, porque no tenía ni idea de mySQL XD), finalmente he conseguido algo así:
mySQL query error: SELECT m.columnas
FROM la_tabla
ORDER BY m.columnas asc
LIMIT 0,50 UNION ALL SELECT * FROM la_tabla LIMIT 0,50
...y este ha sido el error:
mySQL error: Wrong usage of UNION and ORDER BY
Fallo en el ORDER BY y en el UNION... y no toqué el ORDER BY. He llegado a la conclusión de que falla debido a que las dos consultas deben ir entre paréntesis, aunque no estoy seguro; digo esto porque siempre que he visto un UNION, las consultas que "unía" estaban en esta situación.
No obstante, el caso es que estoy "atascado", y tampoco sé cómo meter los paréntesis al principio y al final de cada consulta en mi navegador. ¿Alguna idea?