[HCTF 2018] administrador wp

Descripción del Título

El tema proviene de BUUCTF, enlace: haz clic en mí para ver

Solución inesperada de la metafísica

El nombre del título es admin, debería ser para iniciar sesión con admin

Esto también se confirma en el código fuente.

imagen-20200503180231244

Traté de ingresar la contraseña al azar en la página de inicio de sesión, y cuando ingresé 123, ¡estaba conectado! ! !

En este caso, el craqueo por fuerza bruta también puede obtener la bandera, pero considerando la dificultad de la pregunta buuctf web, no puede ser tan simple, así que busqué en el wp, combiné con el wp de otras personas y aprendí mucho, regístrelo aquí.

Falsificación de sesión de matraces (también solución inesperada)

La sesión en frasco se almacena en la cookie del cliente, es decir, se almacena localmente. Podemos modificar la sesión para lograr el efecto de falsificar al usuario administrador.

Hay un script correspondiente en github: haz clic en mí para ver

Pero la sesión está encriptada, necesitamos conocer la clave secreta para modificar la sesión

Encuentra la clave secreta

Después de registrar una cuenta e iniciar sesión, hay un código fuente de git en la página de modificación de contraseña

imagen-20200503180730036

Descárgalo y encuentra la clave secreta en config.py

imagen-20200503181122457

Sesión falsa

Entonces podemos falsificar la sesión con el script.

Primero, descifra la sesión original

python3 flask_session_cookie_manager3.
py decode -s "ckj123" -c ".eJw9kMGKwjAQhl9lmbOHbZuT4EFIt2whEwpTy-Qirq0mqXGhKtqI775VFk8D__fzDTN3WO-G7mRhfh4u3QzWroX5HT5-YA7YVAk2amRCz7FPlVQCCyU4_QrGo9XSOKS9UN5YDqseJaco-9uUZVqWjklFDtOMedQyv2qqMlPkV-ON51BHLMrA0QZTrJx6OqkNnNbTzjxTTTX1sMenI1YjFsbqphaKeNQNZ-hLr2krmFpn5HIBjxlsT8Nuff7tu-P7BE15ogu0iozTzXdkvxSY5qMie-C4F0aW1pBKkaqIobpxPHi8Ll46Fzb77m2qDytU_-S4CROABGZwOXXD62eQfMLjD-mobCE.Xq5sUg.8y1k1rWI_KY5cx0H4qGeLmOYtLw"

imagen-20200503181724452

Luego modifique el nombre a admin

python3 flask_session_cookie_manager3.
py encode -s "ckj123" -t "{'_fresh': True, 'name': 'admin', 'image': b'RUM3', 'user_id': '10', '_id': b'5d55c2a3cc960384c8caff3a86b58826abed46649158782ba33bbbc13810947da0f6cbe34bfc8fdeb3afe7fce55a71d0f3d533c424fa9e81629f762c978a7bd0', 'csrf_token': b'9158ca16b9b3b087a218ec88d2ae365436d1c9c7'}"

imagen-20200503182645495

La sesión original se ve así

imagen-20200503181608834

Modificamos la sesión de la izquierda a la sesión de arriba

imagen-20200503181832435

Forjó con éxito al usuario administrador para obtener la bandera

engaño unicode (solución esperada)

De hecho, esta solución es la solución esperada por el autor original, pero el código escrito por el autor en ese momento no era riguroso, lo que dio lugar a muchas soluciones inesperadas.

Al leer el código fuente, podemos encontrar que strlower se usa para cambiar la contraseña de registro, inicio de sesión y modificación a minúsculas. Y esta función es personalizada

def strlower(username):
    username = nodeprep.prepare(username)
    return username

Hay una laguna en la función nodeprep.prepare

Para el carácter ᴬ, llamar a la función una vez se convertirá en A, y llamar a la función de nuevo se convertirá en un

Así que registramos un usuario llamado ᴬdmin e iniciamos sesión normalmente. La página de inicio mostrará que nuestro nombre de usuario es Admin

Si usamos Admin para cambiar la contraseña, primero llama a la función strlower para convertir Admin en admin, por lo que realmente cambiamos la contraseña de admin.

imagen-20200503181802317

Luego podemos iniciar sesión con el usuario administrador y la contraseña que acabamos de modificar.

Escribir al final

Aunque el autor de la pregunta fue negligente, hemos aprendido muchas posturas para nosotros, ¡así que continuemos!

Supongo que te gusta

Origin blog.csdn.net/zss192/article/details/105907036
Recomendado
Clasificación