prefacio
Hace unos días, estaba planeando obtener puntos edusrc, así que iba a usar el Nday que no había cepillado para seguir obteniendo puntos, y luego tuve el caso de hoy:
recoger mensaje
Cuando estaba buscando el certificado de una universidad deportiva antes, encontré una laguna en los pasos para modificar la contraseña modificando el archivo html.
Así que estoy listo para inspeccionar y mapear este activo y continuar para ver si se puede calificar.
Elija uno para abrir:
No hay imagen de fondo, pero sigue siendo el mismo activo, porque hay una cuenta al probar una determinada academia deportiva, por lo que puede ingresar directamente a esa cuenta para continuar con la siguiente operación, pero este activo no tiene cuenta, por lo que planeo recoger el número de estudiante algún tipo de
Para ayudarlo a estudiar ciberseguridad, puede recibir un conjunto completo de información de forma gratuita:
① Mapa mental de la ruta de aprendizaje y crecimiento de la ciberseguridad
② Más de 60 kits de herramientas clásicas de ciberseguridad
③ Más de 100 informes de análisis SRC
④ Más de 150 libros electrónicos sobre técnicas de ataque y defensa de ciberseguridad
⑤ La guía de examen de certificación CISSP más autorizada + Banco de preguntas
⑥ Más de 1800 páginas del Manual de habilidades prácticas de CTF
⑦ Colección de las últimas preguntas de entrevistas de empresas de seguridad de redes (incluidas las respuestas)
⑧ Guía de pruebas de seguridad de clientes de aplicaciones (Android+IOS)
El número de estudiante no es nada, y cuando estaba a punto de pensar en otros puntos de entrada, de repente descubrí
El requisito para esta pieza es ingresar los últimos 5 dígitos del número de estudiante, y el número de estudiante suele ser regular, así que fui a generar un diccionario FUZZ
El programa para generar diccionarios de 00000 a 99999 en Python es:
diccionario = {} para i en el rango (100000): clave = str(i).zfill(5) valor = \"Valor\" + clave diccionario\[clave\] = valor con open(\'dict.txt\', \'w\') como archivo: para clave, valor en dictionary.items(): archivo.escribir(clave + \'\\n\')
Después de cargar el diccionario, debe configurar la hora
Finalmente obtuve algunas cuentas con éxito.
EDUSRC no acepta vulnerabilidades de voladura, por lo que esta identificación de estudiante no puede considerarse una vulnerabilidad, pero finalmente salió la identificación de estudiante
Luego ingrese directamente el número de estudiante de 5 dígitos de FUZZ
https://1.test.edu.cn/passworf/find1_html
Después de que find1_html cambió a find2_html
Ingrese directamente la contraseña que queremos restablecer e inicie sesión en segundo plano después de que el cambio sea exitoso:
Continúe explorando los puntos de función para encontrar puntos de avance:
Encontrado un punto de adición activo
No hay un punto de carga, pero hay una función de descripción. Intente construir la carga xss directamente:
<Script>alerta("1)</Script>
XSS+1 almacenado
Carga útil aquí: <Script>alerta("1)</Script>
Bypass con estuche
Posteriormente se encontró otro punto de carga de información:
Estos pocos puntos son transparentes y no abrieron BP, y luego planeo abrir BP para ver si puedo obtener algunos avances.
Haga clic en el primer punto bajo el título de [Agregar información de currículum] en este bloque
Se encuentra que es una interfaz de edición de información, pero salta de una pequeña ventana, así que no me di cuenta cuando abrí BP para capturar paquetes:
Después de hacer clic en Modificar paquete de captura a la derecha:
Cuando se encuentre el valor de identificación, ciérrelo con comillas simples para verlo:
Lado del navegador:
Encontré que la instrucción sql fue ejecutada
Y resultó ser una solicitud GET:
Así que arrastre la ruta de este bloque al navegador para acceder directamente
De esta manera, no tiene que preocuparse por los formularios anti-sqlmap y es más rápido sin empaquetar paquetes de datos.
¡Sqlmap ejecutó con éxito los datos!
inyección sql +1
Luego continúe con [Registro de miembros]
Encierre directamente la búsqueda con comillas simples:
Ejecutó con éxito la declaración de consulta
F12 llama a la red y descubre que también es un método de solicitud GET, copie la URL de la solicitud y vea directamente el eco
Ejecución directa de sqlmap
inyección sql +2
Luego haga clic en las tres palabras [Administrador] en la esquina superior derecha
Al principio no encontré que se pudiera hacer clic en estas tres palabras, después de hacer clic encontré el punto de carga de información:
Esta pieza puede cargar archivos e intentar cargar un php primero
El indicador solo puede cargar los tipos de archivos enumerados anteriormente. Cuando estaba a punto de pensar en otras formas de omitirlo, de repente descubrí que los tipos de archivos que se pueden cargar incluyen pdf, así que intente cargar un pdf-xss directamente:
Cargue correctamente y luego intente acceder a él en un navegador:
Pero el navegador indica que no hay ningún archivo y luego miró cuidadosamente el eco de carga del archivo:
La ruta de uploadfile/16893293978.pdf aquí es seguida por el parámetro ?value=, y después de proporcionar este parámetro, se sigue otro parámetro:
? file=url=uploadfile/16893293978.pdf, y luego regrese a los parámetros en el paquete de solicitud:
Encontré que hay un parámetro &field=url aquí, intente cambiar el parámetro a 1
El navegador repite que "1" no existe, así que esto está claro. El parámetro que se debe conectar después del parámetro &field= es la ruta después de cargar el archivo. Debido a que ingresamos 1 en este bloque, el archivo 1 no existe. , por lo que el eco NotFound es claro. Así que probemos este archivo:
Embalaje:
Activar XSS con éxito
Tienda xss+2
Pero la tarea de esta pieza es getshell, así que continúa intentando subir archivos.
Modifique la información MIME y omita el segmento php5, pero aún indica que no se puede cargar, y la imagen se carga pero no se puede analizar
Esta carga debe escribirse hasta el final, así que continúe buscando otros avances, verifique los parámetros y descubra que hay un "nombre de archivo"
Parámetro problemático, agregue rápidamente un comando de retraso para probar:
`dormir 7`
Retraso de éxito en el eco:
¡Comando ejecutado con éxito! Sondeo adicional:
Curl comando para sondear ngrok.io
¡Eco exitoso!
Ejecución de comando +1, y finalmente use el comando correspondiente para obtener el shell
Resumir
La dificultad general es moderada, pero esta prueba tiene muchas funciones de fondo y debe observarse y probarse cuidadosamente. Una vez que se completa la recopilación de información de fondo, la dificultad de Getshell se vuelve más pequeña en un instante.