Tout d'abord, je tiens à remercier la plateforme 360 Strong Nations Cup et les grands qui ont posé les questions.
Table des matières
Nom du sujet : grand patron grand patron
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