System&Write up/CTF

[Pico CTF 2013] overflow2

Jubil 2018. 1. 14. 21:03
반응형

[PicoCTF-2013] overflow2

 

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 <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <sys/types.h>

#include "dump_stack.h"

 

void vuln(int win, char *str) {

    char buf[64];

    strcpy(buf, str);

    dump_stack((void **) buf, 23, (void **&win);

    printf("win = %d\n", win);

    if (win == 1) {

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

    } else {

        printf("Sorry, you lose.\n");

    }

    exit(0);

}

 

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

    if (argc != 2) {

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

        return 1;

    }

 

    uid_t euid = geteuid();

    setresuid(euid, euid, euid);

    vuln(0, argv[1]);

    return 0;

}

Colored by Color Scripter

cs

 

vuln 함수의 첫 번째 파라미터 win의 값이 1이면 쉘을 실행해줍니다.

 

 


 

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

 


 

첫 번째 파라미터 winebp+0x8에 있습니다.

 

 

0x8 – ( -0x48 ) = 80

buf의 시작 주소와 win 변수의 차이는 80byte입니다.

 

strcpy 함수의 BOF 취약점을 이용해서 win을 덮겠습니다.

 


 

쉘을 취득했습니다.

반응형

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

[Pico CTF 2013] overflow4  (0) 2018.01.17
[Pico CTF 2013] overflow3  (0) 2018.01.16
[Pico CTF 2013] overflow1  (0) 2018.01.14
[Plaid CTF 2013] ropasaurusrex  (0) 2018.01.03
[제 1회 Root CTF] Point to pointer! - (529 point)  (0) 2017.12.24