La segunda evaluación del equipo wp

Esta publicación es para registrar el contenido de la segunda pregunta de evaluación del equipo de seguridad del ciberespacio de larga derecha. Espero recordar las preguntas que he hecho para poder avanzar mejor.

Firmar

Para firmar la pregunta, simplemente envíe la bandera.
Inserte la descripción de la imagen aquí

Misceláneos

1. El panda rojo se convierte en un conejito

Inserte la descripción de la imagen aquí
El archivo adjunto es un archivo llamado zip, sin sufijo. Agregue .zip (el nombre del sufijo del archivo comprimido) después del nombre del archivo, y el archivo se convierte en un archivo comprimido. Abra el archivo comprimido y encuentre una imagen.
Inserte la descripción de la imagen aquí
Según la pregunta "El panda más largo se estira un poco", suponga que necesita cambiar la altura o el ancho de la imagen. Haga clic con el botón derecho del mouse para ver las propiedades de la imagen: la
Inserte la descripción de la imagen aquí
altura de la imagen es relativamente baja, así que considere aumentar la altura de la imagen. La herramienta utilizada aquí es WinHex.
Para conocer el método de operación específico, consulte la esteganografía de imagen CTF. Modifique la altura y el ancho de la imagen. En
pocas palabras, la altura de la imagen es de 380 píxeles, por lo tanto, convierta 380 en hexadecimal, que es 017c. Luego busque 017c en WinHex y cámbielo a lo que queramos. La forma hexadecimal del valor a corregir.
En la operación específica, cambié la altura de la imagen a 420 píxeles (la forma hexadecimal es 01a4), y obtuve con éxito la cadena debajo de la imagen: la
Inserte la descripción de la imagen aquí
cadena es: olee {qlr3y_16q51_y3q1l_rc654_yap45}
Se encuentra la forma de la bandera dada en el título. Esta cadena de caracteres tiene la misma forma que la bandera. El mensaje muestra "Mira hacia abajo en el teclado", así que busqué la decodificación relacionada con el teclado y encontré la contraseña del teclado (el orden alfabético en el teclado corresponde al orden alfabético en el alfabeto, como QWE corresponde a ABC), y OLEE corresponde a ISCC, por lo que Use la contraseña del teclado para obtener la bandera final.

iscc {asd3f_16a51_f3a1s_dv654_fkj45}

2 roto WUHAN

Inserte la descripción de la imagen aquí
Descargue el archivo adjunto como una imagen ilegible. Use WinHex para abrir la imagen y
Inserte la descripción de la imagen aquí
descubrió que el encabezado del archivo de imagen es incorrecto (el encabezado del archivo .jpg debe ser FFD8FF), así que modifique el logotipo del encabezado,
Inserte la descripción de la imagen aquí
guárdelo, abra la imagen con éxito y obtenga la bandera.
Inserte la descripción de la imagen aquí
Para el encabezado del archivo , consulte: varios archivos Logo de encabezado de archivo

bandera {wu_Han_jia_Y0u!}

3. QRQRQRQRQRQRQRQRQRQRQRQRQR

Inserte la descripción de la imagen aquí
El archivo adjunto de descarga es una imagen dinámica de un código bidimensional,
Inserte la descripción de la imagen aquí
ya que es una imagen dinámica, debe verificar cada cuadro uno por uno para encontrar el más especial. Puede usar ps para abrir la imagen dinámica y verla una por una, pero hay 100 cuadros, lo cual es un poco problemático. Aquí utilizo un editor de software Namo GIF, que es más conveniente:
Inserte la descripción de la imagen aquí
así que saque el cuadro 62,
Inserte la descripción de la imagen aquí
la mayor diferencia entre el cuadro 62 y otros códigos QR es el pequeño cuadro en la esquina inferior derecha. En comparación con el código QR general, este código QR carece de tres localizadores, así que use ps para agregar el localizador a la imagen y
Inserte la descripción de la imagen aquí
escanee con WeChat o Alipay para obtener la bandera. (Si no puede escanearlo, escanee más, la imagen no se restaura. Alto dará como resultado una baja tasa de reconocimiento)
Inserte la descripción de la imagen aquí

bandera {GYSEC_GOGOGO}

4. Ven y juega el rompecabezas

Inserte la descripción de la imagen aquí
La música que lo acompaña es: Tiempo, muy agradable. Al principio, realmente no esperaba el significado de esta canción. El archivo adjunto tiene más de doscientos acertijos y el orden es caótico. Realmente quiero explicarlo. Gracias. De hecho, el verdadero significado de Time es ordenar las imágenes de acuerdo con el tiempo, puede ordenar las imágenes y luego usar ps para resolver, es muy fácil.
Inserte la descripción de la imagen aquí

bandera {fate_stay_nt}

Web

1.var_dump (

Inserte la descripción de la imagen aquí
Abra la página web, hay algún código:
Inserte la descripción de la imagen aquí

Aunque no lo entendí muy bien, fui directamente al tema y obtuve: la función var_dump () se usa para generar información sobre las variables. Luego vaya a verificar $ _REQUEST: puede obtener los datos enviados por el método POST y el método GET. Después de hacer referencia a muchos sitios web, obtenga index.php? Hello = 1); print_r (file ("./ flag.php "), Visite la URL, puede obtener la bandera.
Inserte la descripción de la imagen aquí
Artículo de referencia

flag {your_php_is_very_good_my_bro}

2.Fácil desafío

Inserte la descripción de la imagen aquí
He dicho que es una pregunta antigua, luego vaya directamente al enlace: soy la pregunta original

Marcha atrás

1.Simple_py

Inserte la descripción de la imagen aquí
Esta es una pregunta inversa de Python, el archivo adjunto es un archivo .pyc, por lo que debe encontrar una manera de restaurar el archivo .pyc a un archivo .pyc. Para conocer el método específico, consulte el enlace: Python decompilation exe
Este artículo presenta el método de convertir el archivo .exe en un archivo .pyc y luego convertirlo en un archivo .py. En esta pregunta, solo necesitamos ejecutar .pyc para restaurar .py. .

// 这是还原后的.py代码:
// import base64

def encode(mess):
    s = ''
    for i in mess:
        x = ord(i) + 16
        x = x ^ 32
        s += chr(x)

    return base64.b64encode(bytes(s, encoding='utf-8'))


correct = b'VlxRV8KreGFCYU9ZwqNPwqDCqVNPQlVPdmFRV8Kt'
flag = input('input flag:')
if encode(flag) == correct:
    print('you are correct')
else:
    print('you are wrong')

Entre ellos, el código central tiene solo la parte central:

// 核心代码
//     for i in mess:
        x = ord(i) + 16
        x = x ^ 32
        s += chr(x)

Para obtener la bandera, tenemos que escribir el programa en reversa y ejecutar el programa en reversa para obtener la bandera original. Por lo tanto, al cambiar el código central, obtenemos:

// 修改后的代码
// import base64
mess='VlxRV8KreGFCYU9ZwqNPwqDCqVNPQlVPdmFRV8Kt'
s = ''
mess = base64.b64decode(mess)
for i in mess:
    x = i ^ 32
    x = x - 16
    s += chr(x)
print(s)

Después de correr, me sale:

flagÒ {H1R1_iÒs_ÒpÒyc_Re_F1agÒ}

Elimine el Ò que obviamente no es la contraseña para obtener el indicador final:

flag {H1R1_is_pyc_Re_F1ag}

2 reverso fácil

Inserte la descripción de la imagen aquí
El archivo adjunto de descarga es un archivo .exe, porque no es un archivo de Python, por lo que no podemos utilizar el mismo método que la pregunta anterior para restaurar su código. Considere otros descompiladores, use IDA para descompilar aquí, obtenga el pseudocódigo C

// 伪C代码
// #include <stdio.h>
void main() {
	int a;
    char v4; // [esp+16h] [ebp-1Ah]
    char v5; // [esp+17h] [ebp-19h]
    char v6; // [esp+18h] [ebp-18h]
    char v7; // [esp+19h] [ebp-17h]
    char v8; // [esp+1Ah] [ebp-16h]
    char v9; // [esp+1Bh] [ebp-15h]
    char v10; // [esp+1Ch] [ebp-14h]
    char v11; // [esp+1Dh] [ebp-13h]
    char v12; // [esp+1Eh] [ebp-12h]
    char v13; // [esp+1Fh] [ebp-11h]
    char v14; // [esp+20h] [ebp-10h]
    char v15; // [esp+21h] [ebp-Fh]
    char v16; // [esp+22h] [ebp-Eh]
    char v17; // [esp+23h] [ebp-Dh]
    char v18; // [esp+24h] [ebp-Ch]
    char v19; // [esp+25h] [ebp-Bh]
    char v20; // [esp+26h] [ebp-Ah]
    char v21; // [esp+27h] [ebp-9h]
    int v22; // [esp+28h] [ebp-8h]
    int i; 
    printf("请输入数字:");
    while (scanf("%d", &v22))
    {
        v4 = -125;
        v5 = 124;
        v6 = -122;
        v7 = 127;
        v8 = 106;
        v9 = -113;
        v10 = -109;
        v11 = -118;
        v12 = -126;
        v13 = 119;
        v14 = 108;
        v15 = 127;
        v16 = -122;
        v17 = 116;
        v18 = 122;
        v19 = 102;
        v20 = -102;
        v21 = 91;

        for (i = 0; i <= 17; ++i) {
            putchar(v22 - *(&v4 + i) - i);
        }
        putchar(10);
        putchar(10);
        printf("请输入数字:");
    }
}

flag La primera letra "f" del código asII es 0x66, decimal 102. Eso es
x - (- 125) = 102, x = -23
Entonces escriba el código:
muestre algunos a continuación 内联代码片.

//编写出生成flag的代码
// #include <stdio.h>
 
void main()
{       
        int i;
        int s[]={-125,124,-122,127,106,-113,-109,-118,-126,119,108,127,-122,116,122,102,-102,91};
        for(i=0;i<=17;i++)
        {
                putchar(-23- (s【i】)-i);
                 
        }
        putchar(10);
}

Ejecutar, generar bandera:

flag {UPX_is_What?}

Sitio de referencia: un simple ctf inverso

Publicado 4 artículos originales · elogiado 4 · visitas 922

Supongo que te gusta

Origin blog.csdn.net/qq_45813980/article/details/105357409
Recomendado
Clasificación