Crypto

Poor MEGAN!

Oh, NO! Poor Megan! She’s just been bitten by a ZOMBIE! We can save her if we act fast, but the formula for the antdote has been scrambled somehow. Figure out how to unscramble the formula to save Megan from certain zombification. Enter the answer as flag{here-is-the-answer}.

The formula for the antidote: j2rXjx9dkhW9eLKsnMR9cLDVjh/9dwz1QfGXm+b9=wKslL1Zpb45.

Para obtener el “antídoto” en texto plano, podemos utilizar una herramienta llamada Cyberchef. Una vez introducido el texto del “antídoto”, la herramienta detecta automáticamente como fue codificada la cadena de texto. Resulta ser base64 pero utilizando el alfabeto Megan35.

flag{Six-Parts-Honey-One-Part-Garlic}

To be Xor Not to Be

.$)/3<‘e-)<e’:e&'<e<‘e-)<5

En este reto se nos da una cadena de texto cifrado con XOR. Aparenta ser Single Byte XOR asi que podemos usar una página web para obtener el mensaje original.

Descifrando XOR

Flag:

flag{to-eat-or-not-to-eat}

Traffic Analisis

Monstrum ex Machina

Our person on the “inside” of Ghost Town was able to plant a packet sniffing device on Luciafer’s computer. Based on our initial analysis, we know that she was attempting to hack a computer in Lytton Labs, and we have some idea of what she was doing, but we need a more in-depth analysis. This is where YOU come in.

We need YOU to help us analyze the packet capture. Look for relevant data to the potential attempted hack.

To gather some information on the victim, investigate the victim’s computer activity. The “victim” was using a search engine to look up a name. Provide the name with standard capitalization: flag{Jerry Seinfeld}.

En este reto se nos provee de un archivo .pcap. Debemos encontrar el nombre que la víctima estaba. Primero abrimos el archivo en Wireshark. Ya que estamos buscando por una petición en un motor de búsqueda, debemos centranos en las peticiones de tipo GET. Entre todas las peticiones encontramos lo siguiente: Wireshark request

Seleccionamos ‘Follow > TCP Stream’. En la ventana que muestra el flujo TCP, encontramos una petición GET que tiene el siguiente contenido en formato URLencode: Urlencoded request

Una vez decodificado tenemos el siguiente texto.

[{"time":1629670145,"kw":"lytton"},
{"time":1629670163,"kw":"lytton iowa"},
{"time":1629670590,"kw":"mk ultra"},
{"time":1629671595,"kw":"charles geshickter","fq":2},
{"time":1629671715,"kw":"lytton, iowa","fq":2}]

Y ahí está el nombre que la “víctima” estaba buscando.

flag{Charles Geshickter}

SQL

Body count

One of our employees, Jimmie Castora, kept database backups on his computer. DEADFACE compromised his computer and leaked a portion of the database. Can you figure out how many customers are in the database? We want to get ahead of this and inform our customers of the breach.

Submit the flag as flag{#}. For example, flag{12345}.

En este reto se nos da un archivo de un dump de una base de datos mysql. Una vez descargado, lo cargamos en mysql.

mysql -u user -p database < demonne.sql

Después, iniciamos mysql y ejecutamos el comando show tables; para poder visualizar las tablas disponibles en el dump. Por último, para obtener la cantidad de clientes en la base de datos ejecutamos:

select count(*) from customers;

Y obtenemos que hay 10000 clientes.

flag{10000}

Keys

One of De Monne’s database engineers is having issues rebuilding the production database. He wants to know the name of one of the foreign keys on the loans database table. Submit one foreign key name as the flag: flag{foreign-key-name} (can be ANY foreign key).

Use the MySQL database dump from Body Count.

Para este reto necesitamos el mismo archivo que en el reto anterior. Solo necesitamos buscar en el propio archivo el lugar en el que se declara la tabla loans. Una vez encontrado, tenemos tres posibles flags que usar. Por ejemplo.

flag{fk_loans_cust_id}

City Lights

De Monne wants to know how many branch offices were included in the database leak. This can be found by figuring out how many unique cities the employees live in. Submit the flag as flag{#}.

Use the MySQL database dump from Body Count.

En este reto necesitamos agrupar los empleados por ciudad y la flag es el número de filas. Sentencia SQL:

select city from employees group by city;

Flag:

flag{444}

Boom

DEADFACE actors will be targeting customers they consider low-hanging fruit. Check out Ghost Town and see who they are targeting. Submit the number of target candidates as the flag: flag{#}

Use the MySQL database dump from Body Count.

Para este reto tenemos un link a un forum donde hay usuarios discutiendo acerca del ataque. En ese forum sugieren atacar a los “baby boomers” porque resultan más sencillos como objetivo. Por lo tanto, utilizamos el dump de la base de datos para obtener todos los clientes cuya fecha de nacimiento sea entre 1946 y 1964.

Probablemente exista una manera mas sencilla de obtener ese rango de fechas de la tabla customers, pero me cansé de obtener errores intentando transformar el campo dob de texto a fecha. Esta solución no es muy elegante.

select first_name from customers
where dob like '%195%'  
or dob like '%1960'
or dob like '%1961'
or dob like '%1962'
or dob like '%1963'
or dob like '%1964'
or dob like '%1946'
or dob like '%1947'
or dob like '%1948'
or dob like '%1949';

Flag:

flag{2809}

El Paso

The regional manager for the El Paso branch of De Monne Financial is afraid his customers might be targeted for further attacks. He would like you to find out the dollar value of all outstanding loan balances issued by employees who live in El Paso. Submit the flag as flag{$#,###.##}.

Use the MySQL database dump from Body Count.

En este reto necesitamos las tablas employees y loans, y filtrar por nombre de ciudad (El Paso).

select sum(balance) from employees e join loans l on e.employee_id=l.employee_id where city='El Paso';

Flag:

flag{$877,401.00}