System&Write up/CTF

[Pico CTF 2013] rop1

Jubil 2018. 1. 18. 12:39
반응형

[PicoCTF-2013] rop1

 

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

#undef _FORTIFY_SOURCE

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

 

int not_called() {

    return system("/bin/bash");

}

 

void vulnerable_function() {

    char buf[128];

    read(STDIN_FILENO, buf, 256);

}

 

void be_nice_to_people() {

    // /bin/sh is usually symlinked to bash, which usually drops privs. Make

    // sure we don't drop privs if we exec bash, (ie if we call system()).

    gid_t gid = getegid();

    setresgid(gid, gid, gid);

}

 

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

        be_nice_to_people();

    vulnerable_function();

    write(STDOUT_FILENO, "Hello, World\n"13);

}

Colored by Color Scripter

cs

 

 

간단하게 vulnerable_function 함수 안에 read에서 BOF가 터지는데, 그걸 이용해서 return addressnot_called 함수로 바꿔주면 될 것 같습니다.

 

 


 

buf의 시작 주소는 ebp-0x88에 있고, return addressebp+0x4에 있습니다.

둘이 140byte 차이가 납니다.

 

 


 

not_called 함수의 주소도 알았으니, 공격하겠습니다.

 


 

쉘을 취득했습니다.

반응형

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

[Pico CTF 2013] rop3  (0) 2018.01.20
[Pico CTF 2013] rop2  (0) 2018.01.19
[Pico CTF 2013] overflow5  (0) 2018.01.18
[Pico CTF 2013] overflow4  (0) 2018.01.17
[Pico CTF 2013] overflow3  (0) 2018.01.16