System&Write up/CTF

[Pico CTF 2013] overflow3

Jubil 2018. 1. 16. 22:55
반응형

[PicoCTF-2013] overflow3

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

#include <stdio.h>

#include <string.h>

#include <unistd.h>

#include <sys/types.h>

#include "dump_stack.h"

 

/*

 * Goal: Get the program to run this function.

 */

void shell(void) {

    execl("/bin/sh""sh"NULL);

}

 

void vuln(char *str) {

    char buf[64];

    strcpy(buf, str);

    dump_stack((void **) buf, 21, (void **&str);

}

 

int main(int argc, char **argv) {

    if (argc != 2) {

        printf("Usage: buffer_overflow [str]\n");

        return 1;

    }

 

    uid_t euid = geteuid();

    setresuid(euid, euid, euid);

    printf("shell function = %p\n", shell);

    vuln(argv[1]);

    return 0;

}

Colored by Color Scripter

cs

 

shell을 실행시켜주는 shell 함수가 보입니다.

 

strcpy 함수의 BOF 취약점을 이용해서 return addressshell 함수로 우회해주면 될 것 같습니다.

 

 


 

buf의 시작 주소는 ebp-0x48입니다.

return addressebp+0x4에 있습니다.

 

0x4 – ( -0x48 ) = 76

buf의 시작 주소와 return address의 차이는 76byte입니다.

 

 


 

아무 인자나 넣고 실행해보면 shell 함수의 위치도 알려줍니다.

 

 


 

쉘을 취득했습니다.

반응형

'System&Write up > CTF' 카테고리의 다른 글

[Pico CTF 2013] overflow5  (0) 2018.01.18
[Pico CTF 2013] overflow4  (0) 2018.01.17
[Pico CTF 2013] overflow2  (0) 2018.01.14
[Pico CTF 2013] overflow1  (0) 2018.01.14
[Plaid CTF 2013] ropasaurusrex  (0) 2018.01.03