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
Nombre del tema: gran jefe gran jefe
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