Reverse Engineering

Name
Solves

Raw Diary πŸ₯ˆ

13

Mencari PW πŸ₯‰

13

nomolog πŸ₯‰

6

Gacor πŸ₯ˆ

4

ffiishy (TBU)

1

Raw Diary

Description

Author: .effie

I put a digital sign on this diary ^-^

Initial Analysis

We are given a file:

β”Œβ”€[mirai@parrot]─[~/ctf/TCP1P Ramadhan 2025/Raw Diary]
└──╼ $file chall
chall: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=9edbed209686e8fd38cc522ae3f08453c9262498, for GNU/Linux 3.2.0, stripped

Code Analysis

Decompile using IDA:

This code essentially opens 2 files, flag.txt and output.txt. Then it initiate a PRNG using the current time as a seed. It then encrypt the content if flag.txt using XOR against a randomly generated number. After that, it will output the encrypted flag to output.txt

Solve

To decrypt the flag, we first need to find out what seed is used when initiating the PRNG.

When we are using the same seed for some PRNG. The sequence of the generated random value will always be the same.

But when i try to decrypt using the exact timestamp given on the output.txt, it doesn't outputs a flag.

So my instant thought is to bruteforce the timestamp, with the range of 10 minutes before and 10 minutes after. And we will get the flag.

Mencari PW

Description

Author: b4r

Mas bisa bantu aku buat login? Aku lupa passwordnya :(

Initial Analysis

We are given a file:

If we try to run it, we will get this error:

We identify that it is a PyInstaller executable:

To get the code, we need to extract the .pyc files first, we can use pyinstxtractor.

Code Analysis

We decompile chall.pyc using pylingual:

There is no password checker logic, but when we look at the python bytecode:

There is some python bytecode, that is checking our input:

There are two conditions that it needs to pass:

This code checks if char is in pw_string:

This code checks if it is not in the range of [a-z_]

So it will not jump this this condition:

So for every password list it needs to:

  1. Is in the range of [a-z_]

  2. For every char[i], is not in password[i]

Solve

Based on the two condition above, i write a script and get the flag:

nomolog

Description

Author: .effie

D.I.D. i do that??

Initial Analysis

We are given two files:

Code Analysis

We open the file in IDA:

This is a rust binary. I am not really familiar with Rust. (And i don't really understand how this code works :b). So i do output based analysis.

Solve

Analyzing Program Behavior

We are given an encrypted string:

Our objective is to match our input with the encrypted string.

This will outputs all possible chars and this is what it will look like when encoded:

So for every character, it will have the prefix 111312211 then is followed by the character. 1 is a special case where it becomes 312211

Knowing that, we will first try to look which character have the prefix 111312211 :

We found some character, that is:

While analyzing, we noticed some characters not following the prefix, so i thought that it was a multiple character:

We found that it matches part of the encrypted flag:

The flag becomes:

We continue:





You get the idea. After some trial and error, we will get the correct flag:

When submitted to the platform, the flag doesn't use the flag format so...

Gacor

Description

Author: .effie

i did not have gaming relation with that balatro

Initial Analysis

We are given 3 files:

Code Analysis

We decompile in IDA:

Solve

ffiishy (TBU)

Description

Author: f4r4w4y

Foreign Function Interface is FFIishy (or ffiilthy?)

Initial Analysis

TBU

Code Analysis

TBU

Solve

TBU

Last updated