¿Cómo las vulnerabilidades de software conducen a un shell en un sistema?

Los programas generalmente ejecutarán programas externos para realizar tareas simples que los programas especializados pueden hacer muy bien. Tomemos grep, por ejemplo, busca muy bien los archivos, así que en lugar de escribir el código para hacerlo, simplemente llame a grep. El programa externo necesita tomar una entrada externa para hacer su trabajo. Estos parámetros generalmente son generados por el usuario. Si puede salir de la encapsulación de los parámetros, puede ejecutar comandos adicionales.

Aquí hay un ejemplo. Si sabe que el programa ejecutará “foo ‘parámetros'” y puede ingresar directamente “parámetros” sin modificaciones, puede poner un “‘;” entonces puede ejecutar cualquier cosa después del punto y coma. Todo lo que hace es cerrar la cita abierta rompiendo la cadena y luego terminar la declaración con punto y coma.

Lo mismo sucede con la inyección sql. En lugar de ejecutar comandos sql, está ejecutando comandos de shell. Vea esto para obtener una explicación de la inyección sql: Hackear sitios web con inyección SQL – Computerphile