2022 "Copa de Naciones poderosas" ronda preliminar wp (con guión, proceso detallado)

En primer lugar, me gustaría agradecer a la plataforma 360 ​​Strong Nations Cup y a los grandes que hicieron las preguntas.

Tabla de contenido

Título: Bienvenido_a_QGB

Nombre del tema: gran jefe gran jefe

Título: La foto de fn

Título: Encuentra GIF

Título: B@tCh

Título: babyRSA

 Saludos a todos ( •̀ ω •́ )y espero verlos de nuevo


  • Título: Bienvenido_a_QGB

 

 Base64 directa para obtener la bandera


  • Nombre del tema: gran jefe gran jefe

Descargue el archivo adjunto para obtener una imagen

El tema sugiere que puede obtener imágenes a través de la esteganografía lsb, pero la mayoría de las personas no saben cómo usar stegsolve.

Aquí hay una forma más directa.

poner en kali

Encuentra información con zsteg

Encontré una imagen dentro

proponer fotos

zsteg -e b1,rgb,lsb,xy 1.png>99.png

extraer una imagen

 

La imagen tiene flechas para guiar la idea de que puede ser altamente esteganográfica.

arrastrar a 010

cambiar altura

obtener bandera

obtener bandera


  • Título: La foto de fn

 La descarga de archivos adjuntos encontró que se requiere una contraseña

Cuando encuentras que no hay aviso

solo trata de explotar

Obtenga la contraseña de descompresión de cuatro dígitos

7u3N

Abra el paquete comprimido

texto abierto

 

Txt tiene un indicador, así que simplemente coloque la bandera en 010 directamente

txt dice que es una imagen y según el código 010

Así que agregue el encabezado del archivo de png

Obtener con éxito un código QR

Pero el escaneo encontró que la bandera no está aquí.

 Entonces puede ser información confusa.

un archivo más

No se puede abrir y arrastrar 010 millas

Se comprueba que es un formato de paquete comprimido

cambiar directamente el sufijo

Después de abrir, todavía hay un archivo sin sufijo

 

Piense en consejos de texto

cambiar decisivamente el encabezado del archivo

 

 obtener un código QR

 

 Transcodificar para obtener la bandera


  • Título: Encuentra GIF

 Descargar archivos adjuntos

Se encuentra que el paquete comprimido requiere una contraseña de descompresión

Intenté de nuevo sin éxito  

Arrastre a 010

Encontré que el paquete comprimido es una contraseña falsa

Descomprima después de reparar con la herramienta de reparación que viene con el software win

obtener

 aaa arrastre 010

encontrado en formato png

 añadir sufijo a una imagen

 Arrastre 010 millas directamente para cambiar la altura

 

Gire la imagen para obtener la contraseña de descompresión de bbb.zip

obtener un archivo bbb sin sufijo

 

 Al principio, estaba obsesionado con analizar animaciones GIF (después descubrí que era muy útil)

Compare los formatos de archivo bbb y ccc.gif

encontrar similitudes

Entonces hay razones para sospechar que bbb es un archivo gif

Así que reemplace decisivamente los caracteres ilegibles de bbb con la cabeza de ccc

 

 Guárdelo como un archivo gif

obtener otro archivo gif

Descubrí vagamente que había una bandera parpadeando en el interior.

Póngalo en stegsolve para mencionar el número de fotogramas.

En el octavo cuadro hay de hecho algo

 Después de guardar, use stegsolve directamente

Encienda los bits de calificación para encontrar el más claro

 obtener bandera


  • Título: B@tCh

 Descomprimir para obtener el archivo bat

 

 No estoy seguro de lo que es 

Usa 010 para abrir primero

distorsionado

haga clic en hexadecimal

Después de buscar a través de recursos de varias partes, se sabe que el método de cifrado es el cifrado por lotes. Use py para escribir un script para el descifrado. Antes de eso, debe realizar un procesamiento en el bate para que coincida con el método de cifrado. Use 010editor para abrir el bat, cambie al modo hexadecimal y agregue los siguientes campos al encabezado del programa:

::BatchEncryption Compilación 201610 Por [email protected]

 

guardar como archivo de texto

En este momento, el script debe corregirse.

Adjunta el script (es gratis)

#!/usr/bin/python
# -*- coding:utf-8 -*-
#
# Batch Decryption 202009 (BatchEncryption Build 201610)
#

import os
import sys

encrypt_file = ''
encodeErrByteArray = [b'\xfe', b'\xff']

def decryption(data):
    # 去除头部后的源代码下标开始位置
    i = data.index(b'163.com\r\n') + 9
    vars = {}
    length = len(data)
    source = ''
    while i < length:
        Data = run(vars, data, i)
        i = Data.get('index')
        source += Data.get('buf')
    return source

def run(vars, data, i):
    buf = ''
    f = 0
    t = 0
    x = False
    l = len(data)
    while(True):
        if data[i] == 0x0d and data[i+1] == 0x0a:
            i += 2
            break
        # get %var:~x,y% %0
        if data[i] == 0x25:
            if not x:
                x = True
                f = i
            else:
                x = False
                t = i
                rst = var_percent(data[f:t+1], vars)
                buf += rst
            i += 1
        else:
            if not x:
                try:
                    buf += str(data[i:i+1], encoding="utf-8")
                    i += 1
                except Exception as err:
                    # 过滤掉无法解析的字节
                    if data[i:i+1] in encodeErrByteArray:
                        buf = ''
                        i += 1
                    else:
                        # 以ansi码解析中文
                        chinese = b''
                        temp = i
                        while (str(data[temp:temp+1]).find('x') >= 0):
                            chinese += data[temp:temp+1]
                            temp += 1
                        buf += chinese.decode('ansi', 'ignore')
                        i = temp
            else:
                if (f + 1 == i) and ((data[i] >= 0x30 and data[i] <= 0x39) or data[i] == 0x2a):
                    x = False
                    t = i
                    rst = str(data[f:t+1], encoding="utf-8")
                    buf += rst
                i += 1
        if i >= l:
            break
    #print(buf)
    bufs = buf.split('&@')
    for var in bufs:
        if var[0:4] == 'set ':
            var = var[4:]
            b = var.find('=')
            vars[var[0:b]] = var[b+1:].replace('^^^', '^')
    buf += '\r\n'
    return {'index':i, 'buf':buf}

"""
%':~-53,1%
':~-53,1
["'", '-53,1']
"""
def var_percent(data, vars):
    full = str(data, encoding="utf-8")
    buf = full[1:len(full)-1]
    buf = buf.split(':~')
    var = buf[0]
    if not var in vars:
        vars[var] = os.getenv(var)
    ent = vars[var]
    if (len(buf) > 1):
        l = len(ent)
        buf = buf[1].split(',')
        f = int(buf[0])
        t = int(buf[1])
        if f < 0:
            f, t = l + f, t
        rst = ent[f: f+t]
    else:
        rst = full
    return rst

def makeFile(path,content):
    try:
        encryptionFilePath = os.path.dirname(sys.argv[1])
        encryptionFileName = os.path.basename(sys.argv[1])
        encryptionFile = encryptionFileName.split('.')
        decryptionFileName = encryptionFile[0] + '_denctyption.' + encryptionFile[1]
        decryptionFile = encryptionFilePath + '/' + decryptionFileName
        print(decryptionFile)
        file = open(decryptionFile, 'w+')
        file.write(content)
        file.close()
    except Exception as err:
        print(err)
        exit        

if __name__ == '__main__':

    try:
        if len(sys.argv) < 2:
            print('param len error\nuse: python dencrypt.py encrypt.bat')
            exit
        encrypt_file = sys.argv[1]
        file = open(encrypt_file, "rb")
        data = file.read()
        file.close()
        source = decryption(data)
        makeFile(encrypt_file, source)
    except Exception as err:
        print(err)
        exit

Ingrese en la línea de comando cmd

D:\py> pitón 2.py 2.txt

 

obtener bandera 


  • Título: babyRSA

Descargue el archivo adjunto para obtener

Una decodificación rsa estándar

Una mirada a la esteganografía rsa

En el guión (oh, es gratis)

from Crypto.Util.number import long_to_bytes
import gmpy2
p =gmpy2.mpz(138426212841397149251588296134109165537899310438173750798364671675288360000561798355248532054510396589533971267028332214842673811687883616744131130398289077554612883492204032984950562003356001139508926059499376562553551028636226548350263501563647121411422314575340826478224596800551927493501012088298680613879)
q =gmpy2.mpz(143049585916449723925099288769361999764006236021072588846981723369760726410300239985500007665844216512624584735358913225102358935263419564762626442560266419262555820476424949328464294635696200999314599615276252945343396324462380831303649657541178450608628341694003116451196859197001909770503494349726784153027)
e =gmpy2.mpz(33)
phi_n= (p - 1) * (q - 1)
d = gmpy2.invert(e, phi_n)
n=q*p
print("d is:")
print (d)
print("n")
print(n)
c=eval('8289193595993122921665841895022976104081072031742625708463764526627277052318279883859957490142516216024577600646435489409922900157398525709897066174566802837502462355349783465478982642622084973551364981880045419080599645199823932885880822500635358984691098019833373137233421653021398144494548012693727095816659975325054446041806452350925160187980103112171629784199440456927010178848494443466141894033183475723365090593126309457761806861074583084445735295863195227044710706725657905516027928685083079534461311107335936896525014768633605005601716003989306032040278750752221002412831419560140443505534384151408234420458')
m = pow(c, d, n)

print(m)
string = long_to_bytes(m)
print(string)

 correr

 obtener bandera

Por el bien de las secuencias de comandos gratuitas, preste atención.

descargar archivo adjunto

Concurso de habilidades técnicas "Powerful Country Cup" de 2022 - Anexo Concurso de habilidades técnicas "Powerful Country Cup" de 2022 Para obtener más recursos de descarga y materiales de aprendizaje, visite el canal de descarga de CSDN .

 Saludos a todos ( •̀ ω •́ )y espero verlos de nuevo

Supongo que te gusta

Origin blog.csdn.net/m0_68012373/article/details/125841806
Recomendado
Clasificación