En primer lugar, no estoy tratando de piratear o hacer algo ilegal. Pensé que les deja saber. Tengo un cliente que quiere que haga algunas modificaciones en su sistema, cuando lo estaba viendo noté que NADA se había escapado. No estoy bromeando, nada se está escapando. Le expliqué que no es seguro tener un sistema como ese. Luego procede a decirme que ha tenido su sistema así durante algunos años y que nada ha sucedido. Necesito mostrarle que su sistema no es seguro, pero realmente no sé hacer una inyección sql. Aquí hay algunas consultas que usan $ _GET y no se escapan.necesita ayuda con inyección sql
SELECT *,DATE_FORMAT(joined,'%M %d, %Y') as \"Joined\" FROM `members` WHERE `name` LIKE '".$ltr."%' ORDER BY points DESC LIMIT $page,50
Aquí hay otro:
SELECT * FROM groups WHERE id=$thisladder[grid]
La única cosa que veo que "podría" limpiar el $ _GET es esta función:
if (!ini_get('register_globals')) {
$superglobals = array($_SERVER, $_ENV,
$_FILES, $_COOKIE, $_POST, $_GET);
if (isset($_SESSION)) {
array_unshift($superglobals, $_SESSION);
}
foreach ($superglobals as $superglobal) {
extract($superglobal, EXTR_SKIP);
}
}
Es posible que la función anterior puede estar desinfectando las variables. Y sí, el sistema también usa el registro global, que también es malo.
También hice una copia de seguridad, por las dudas.
¿Desea saber cómo evitar una inyección SQL o probarle a su cliente que no es segura? – skyuzo
¡Oh hombre, no solo no escapan nada, sino que * explícitamente * emulan la funcionalidad 'register_globals' si está deshabilitada! Esta es la primera! – rid
No sé cómo probarlo. Pero sí sé que mysql_real_escape y las declaraciones preparadas son el camino a seguir. – user962449