Inyección de SQL ByPass

-1
$result = $db->query('SELECT * FROM USERS WHERE password="'.$_GET['password'].'"');
if($result->fetchArray()) $step1=true;

$result = $db->query('SELECT * FROM USERS WHERE password=\''.$_GET['password'].'\'');
if($result->fetchArray()) $step2=true;

$result = $db->query('SELECT * FROM USERS WHERE password='.$_GET['password']);
if($result->fetchArray()) $step3=true;

Este código es parte de un desafío ctf que estoy haciendo estrictamente con fines de aprendizaje y no estoy muy seguro de cómo hacer que cada una de estas declaraciones SQL se evalúe como verdadera.

Algunos pensamientos que tenía estaban haciendo una declaración de inserción donde la contraseña sería igual a la declaración de inyección, pero no estoy seguro de que sea un buen enfoque. Si es posible, me gustaría obtenerlo sin modificaciones en la base de datos backend.

Realmente no estoy buscando una respuesta directa, pero quizás alguna orientación.

Aprecia la ayuda.

EDIT : $ step1, $ step2 y $ step3 necesitan ser evaluados como verdaderos

    
pregunta CBaker 08.04.2018 - 00:11
fuente

1 respuesta

0

El sitio web OWASP Foundation es una fuente valiosa para los temas de seguridad de la información .

Tienen una página designada para Omisión de inyección SQL .

Su objetivo es que debe asegurarse de que, sin embargo, la consulta se ha construido, el resultado será un valor true .

Un ejemplo proporcionado por OWASP fue el siguiente:

select * from table where id = 1 AND if((ascii(lower(substring((select user()),$i,1))))!=$s,1,benchmark(200000,md5(now())))

La mayoría de los sitios web que toman en serio sus datos tienen medios para proteger sus bases de datos de todo tipo de ataques de inyección , uno básico es desinfección de entrada .

Referencia: Inyección de SQL sin pasar por alto WAF - OWASP. (2018). Owasp.org. Consultado el 8 de abril de 2018, de enlace

    
respondido por el Kosovic 08.04.2018 - 02:59
fuente

Lea otras preguntas en las etiquetas