---
description: 'Note : A JOURNEY TO GAIN KNOWLEDGE'
---

# ELF x86 - Stack buffer overflow basic 2

```c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
 
void shell() {
    setreuid(geteuid(), geteuid());
    system("/bin/bash");
}
 
void sup() {
    printf("Hey dude ! Waaaaazzaaaaaaaa ?!\n");
}
 
void main()
{
    int var;
    void (*func)()=sup;
    char buf[128];
    fgets(buf,133,stdin);
    func();
}
```

* Về cơ bản ý tưởng vẫn là ghi tràn biến buff để ghi đè giá trị lên biến trước đó&#x20;
* Lúc này chính là địa chỉ của func : `void (*func)()=sup;` , tức là thay vì trỏ tới địa chỉ của sup như thường lệ:

<figure><img src="https://2201636059-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSfoQhbocJNOvMrmTVxh9%2Fuploads%2FLw0siuNL8YGTFNQ1NMbR%2Fimage.png?alt=media&#x26;token=eea950d4-6b89-4bc2-afc8-b65ec634e7b5" alt=""><figcaption></figcaption></figure>

* Sau khi attack func lúc này sẽ trỏ tới địa chỉ shell và thực thi gọi nó
* Để biết được địa chỉ của hàm shell, ta có thể dùng gdb hoặc pwndbg:

<figure><img src="https://2201636059-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSfoQhbocJNOvMrmTVxh9%2Fuploads%2FvDMcZpIFblo4sG67ogOQ%2Fimage.png?alt=media&#x26;token=d0923b4f-b8d5-4d47-927e-e7fdb207e078" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2201636059-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSfoQhbocJNOvMrmTVxh9%2Fuploads%2F9FssDsn4U2LTIWu6Exiv%2Fimage.png?alt=media&#x26;token=1e2c22d1-6dd3-4c28-a415-38f7f083fe7c" alt=""><figcaption></figcaption></figure>

* Cuối cùng ta chuyển địa chỉ sang little-endian, get shell và cat flag:

<figure><img src="https://2201636059-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSfoQhbocJNOvMrmTVxh9%2Fuploads%2FtF0cz8KVZhUSSxpHml8V%2Fimage.png?alt=media&#x26;token=8c6a47d2-74f0-4d1d-9c26-dcc4b7c1cf76" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2201636059-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSfoQhbocJNOvMrmTVxh9%2Fuploads%2FAs6gPIXimWLQ6MuLPlxi%2Fimage.png?alt=media&#x26;token=23a477e9-11d8-4c30-815f-5a6afe14fb67" alt=""><figcaption></figcaption></figure>

> flag: B33r1sSoG0oD4y0urBr4iN
