Lorenzo La Corte - 2023/2024 - Università degli Studi di Genova


<aside> 💡 Link to the web version (more readable): https://llacorte.notion.site/BASC-Assignment-4-Exploitation-d5f2834dc9974e3593b02ca7b14a2aaf?pvs=4

</aside>


This report provides descriptions of exploits for different challenges:

Challange Vulnerability Mitigations - requirements - constraints - limitations Possible Exploitation Exploit
Call Me Buffer Overflow Overwrite the return address and return to print_flag Link
Call Me Buffer Overflow - No gadgets for calling execve (not possible to do return-to-system ROP chain attack)

Exploit Call Me

<aside> 💡 As the name suggests, you should probably call some function (with the correct arguments) to make the service print a flag. Are there any other flags? Maybe...

</aside>

Let’s start analyzing it:

$ file call_me_LorenzoLaCorte 
call_me_LorenzoLaCorte: ELF 32-bit LSB pie executable, Intel 80386, ... stripped

Is a 32-bit stripped executable; when I run it, it keeps asking me for input:

$ ./call_me_LorenzoLaCorte 
Enter line #1: lax
Enter line #2: lax
Enter line #3: lax
Enter line #4: lax
Enter line #5: lax
Enter line #6: lax
Enter line #7:

Ghidra Analysis

After identifying the entrypoint, I can take a look at the main function, which:

all_the_logic

The function is enclosed in a while (true) loop that continues until a break condition is met.

The loop is probably comparing user input with an array of strings:(&PTR_s_Color_me_your_color, _baby_00014020).