Tour préliminaire "Powerful Nations Cup" 2022 wp (avec scénario, processus détaillé)

Tout d'abord, je tiens à remercier la plateforme 360 ​​​​Strong Nations Cup et les grands qui ont posé les questions.

Table des matières

Titre : Welcome_to_QGB

Nom du sujet : grand patron grand patron

Titre : L'image fn

Titre : Rechercher des GIF

Titre : B@tCh

Titre : babyRSA

 Bravo à tous ( •̀ ω •́ )y J'ai hâte de vous revoir


  • Titre : Welcome_to_QGB

 

 Base64 direct pour obtenir le drapeau


  • Nom du sujet : grand patron grand patron

Téléchargez la pièce jointe pour obtenir une photo

Le sujet indique que vous pouvez obtenir des images via la stéganographie lsb, mais la plupart des gens ne savent pas comment utiliser stegsolve.

Voici un moyen plus direct

mettre en kali

Trouver des informations avec zsteg

J'ai trouvé une photo à l'intérieur

proposer des photos

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

extraire une image

 

L'image a des flèches pour guider l'idée qu'elle peut être hautement stéganographique

faites glisser vers 010

changer de hauteur

obtenir le drapeau

obtenir le drapeau


  • Titre : L'image fn

 Le téléchargement de pièces jointes a révélé qu'un mot de passe est requis

Lorsque vous constatez qu'il n'y a pas d'invite

essaie juste d'exploser

Obtenez le mot de passe de décompression à quatre chiffres

7u3N

Ouvrez le package compressé

ouvrir txt

 

Txt a une invite, il suffit donc de mettre le drapeau directement en 010

txt dit que c'est une image et selon le code 010

Ajoutez donc l'en-tête de fichier de png

Obtenir avec succès un code QR

Mais le scan a révélé que le drapeau n'est pas là

 Il peut donc s'agir d'informations déroutantes

encore un dossier

Impossible d'ouvrir et de faire glisser 010 miles

On constate qu'il s'agit d'un format de package compressé

changer directement le suffixe

Après ouverture, il y a toujours un fichier sans suffixe

 

Pensez aux astuces txt

modifier de manière décisive l'en-tête du fichier

 

 obtenir un code QR

 

 Transcoder pour obtenir le drapeau


  • Titre : Rechercher des GIF

 Télécharger les pièces jointes

Il s'avère que le package compressé nécessite un mot de passe de décompression

J'ai réessayé en vain  

Faites glisser vers 010

Trouvé que le package compressé est un faux mot de passe

Décompressez après la réparation avec l'outil de réparation fourni avec le logiciel win

obtenir

 aaa glisser 010

trouvé au format png

 ajouter un suffixe à une image

 Faites glisser 010 miles directement pour modifier la hauteur

 

Faites pivoter l'image pour obtenir le mot de passe de décompression de bbb.zip

obtenir un fichier bbb sans suffixe

 

 Au début, j'étais obsédé par l'analyse des animations GIF (qui s'est avérée plus tard très utile)

Comparer les formats de fichiers bbb et ccc.gif

trouver des similitudes

Il y a donc des raisons de soupçonner que bbb est un fichier gif

Remplacez donc de manière décisive les caractères brouillés de bbb par la tête de ccc

 

 Enregistrez-le en tant que fichier gif

obtenir un autre fichier gif

J'ai vaguement trouvé qu'il y avait un drapeau clignotant à l'intérieur.

Mettez-le en stegsolve pour mentionner le nombre d'images

Dans la huitième image, il y a bien quelque chose

 Après avoir enregistré, utilisez stegsolve directement

Activez les bits de notation pour trouver le plus clair

 obtenir le drapeau


  • Titre : B@tCh

 Décompressez pour obtenir le fichier bat

 

 Je ne sais pas ce que c'est 

Utilisez 010 pour ouvrir en premier

brouillé

cliquez sur hexagone

Après une recherche dans les ressources multipartites, on sait que la méthode de cryptage est le cryptage par lots. Utilisez py pour écrire un script de décryptage. Avant cela, vous devez effectuer un traitement sur la batte pour faire correspondre la méthode de cryptage. Utilisez 010editor pour ouvrir le bat, passez en mode hexadécimal et ajoutez les champs suivants à l'en-tête du programme :

::BatchEncryption Build 201610 Par [email protected]

 

enregistrer en tant que fichier txt

À ce stade, le script doit être corrigé.

Joindre le script (c'est gratuit)

#!/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

Entrez à la ligne de commande cmd

D:\py> python 2.py 2.txt

 

obtenir le drapeau 


  • Titre : babyRSA

Téléchargez la pièce jointe pour obtenir

Un décodage rsa standard

Un regard sur la stéganographie rsa

Sur le script (oh c'est gratuit)

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)

 Cours

 obtenir le drapeau

Dans l'intérêt de la gratuité des scripts, veuillez faire attention.

télécharger la pièce jointe

Concours de compétences techniques "Powerful Country Cup " 2022 - Pièce jointe Concours de compétences techniques "Powerful Country Cup" 2022 Pour plus de ressources de téléchargement et de matériel d'apprentissage, veuillez visiter le canal de téléchargement CSDN .

 Bravo à tous ( •̀ ω •́ )y J'ai hâte de vous revoir

Je suppose que tu aimes

Origine blog.csdn.net/m0_68012373/article/details/125841806
conseillé
Classement