SQLi con filtro de comillas?

0

Estoy realizando algunos cursos de piratería, y en una de las lecciones, tengo un posible SQLi, pero en el código fuente de Python hay una cláusula if justo antes de la declaración SQL, que filtra el símbolo de la cita:

user="user"
pass="pass"

if "'" in user+pass:
  print "error"

else:
  db.execute("select * from users where username = '%s' and password = '%s'" % (username,password))

Entonces, cuando intento inyectar asdf' or '1'='1 en cualquiera de los campos, la cláusula if me detiene. He intentado codificar el símbolo de cita en diferentes codificaciones (hexadecimal, base64, html, etc.), pero todavía no funciona.

¿Alguna idea?

    
pregunta g0ldrush 23.12.2018 - 13:17
fuente

2 respuestas

2

Usa una barra invertida como el último carácter del usuario. Por ejemplo, para las entradas user\ y or 1=1 -- se ejecuta la siguiente consulta:

select * from users where username = 'user\' and password = ' or 1=1 -- '

Cuando la entrada de cadena se interpreta de esta manera:

seleccione * de los usuarios donde username = ' user \' and password = 'o 1 = 1 -'

    
respondido por el Sjoerd 23.12.2018 - 15:11
fuente
1

Usted controla dos entradas. Eso significa que puede finalizar el primero con un carácter de escape, extendiéndolo efectivamente al inicio de la segunda entrada, y luego colocar el SQL arbitrario en la segunda. Para evitar una cotización incomparable al final de la segunda entrada, deberá comentar el resto de la consulta.

    
respondido por el CBHacking 23.12.2018 - 13:50
fuente

Lea otras preguntas en las etiquetas