CTF 8dot8 y Medium

daldana 3000.
3 min readOct 30, 2018

--

Mude el contenido del blog a medium. Una mierda tumblr 😹. Esta shit tiene hasta emoticons 🤙. Al grano. Estuve participando con la crew y nos fue bacán. Acá el writeup del WEB02.

Te presentan un login con un imagen que indica como se realiza el inicio de sesión. En la imagen, un bloqueo según una expresión regular: si el nombre de usuario contiene espacios, “union”, “or”,”and” manda un “Oops” 🥀.

Member Login de Web02

Cuando realizabas un login con comillitas, MySQL lloraba 😢 tirando errores ❌ que indicaban una mala sintaxis 🐛. Ya concluiamos que sólo la variable del username tendría que ser la inyectable puesto que password se le aplicaba md5, por lo tanto no tenía sentido que fuese hax0reable.

Luego de cuestionar hasta la documentación 😂, encontramos un blind reemplazando:|| en vez de OR, /**/ en vez de espacios, con la intención de evadir ese preg_match 🔪.

Encontramos un punto de comparación para una sentancia correcta:

Blind SQLi (Verdadero)

Y para una comparación incorrecta:

Blind SQLi (Falso)

Y lo otro fue una despejada a lo Kalule Melendez, se identificó el largo de la columna que ya conocemos (name), y luego, letra x letra identificamos el nombre del primer usuario.

Largo del nombre de usuario = 6.

Y luego con substring y calculando el ascii de estas 6 letras:

65 = A

El usuario era “Ademir” 🇧🇷. Luego se podía aplicar la misma lógica para la columna password, pero la palabra password, lleva OR, así que mal 💩. Luego de darle vuelta a como bypassear ese “ignore case” del preg_rematch, dejé corriendo un ataque de fuerza bruta con el top 10.000 de passwords más conocidas.

Zingoooo

Al cuarto intento, se mostró un largo en la respuesta del bruteforce distinto al resto. Intentamos iniciar sesión con Ademir/1234 y tiro la flag.

HACKAFLAG{Bl1nd_sqli_1s_s0_c00l}

--

--

daldana 3000.

【 security things】💊