Tags

Young Blaze

You are provided with a single file called Damn. You can run file command on it to figure out what it is.

$ file Damn
    Damn: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped
    

As you can see, this is not an executable file but a relocatable file. So, the source was compiled without linking and produced an object file.

In order to make it executable, you need to link it using some linker.

Method #1

Using ld (The GNU linker). Since this is a x32 object file you need to use 32-bit architecture while linking.

$ ld -m elf_i386 -s -o out Damn
    $ cat out
    Poseidon{L1nK_tH4T_$h17_im_0u7}
    

Method #2

Using gcc (The GNU C compiler). Since this is a x32 object file you need to use 32-bit architecture while linking. This object file already has essential startup functions defined so use -nostartfiles option. This method produces some linker warning but nonetheless produces the executable file.

-nostartfiles
    
    Do not use the standard system startup files when linking. The standard system libraries are used normally, unless -nostdlib or -nodefaultlibs is used. 
    
$ gcc -o out Damn -m32 -nostartfiles
    $ cat out
    Poseidon{L1nK_tH4T_$h17_im_0u7}
    

Yolo Method #3

Running strings command on the file reveals interesting string at the beggining.

$ strings Damn
    Ezfp|qz{nY${^Ja]!AJ1}$"J|xJ%`"h
    .text:
    .bss
    .data
    .shstrtab
    .symtab
    .strtab
    .rel.text:
    tiwini3ada!?
    _start
    music
    _exit
    result
    secret
    secret_len
    

Maybe it’s the flag :)
It’s worth the shot to paste it in Magic decoder at CyberChef

Analysis revealed that the falg is XOR encrypted with HEX key of value 15

Flag

Poseidon{L1nK_tH4T_$h17_im_0u7}

Easy challenge but you can learn about different ELF formats and about different stages of compilation :)