728x90
저번에 rop-1에 이어서 rop-2의 풀이를 적어보겠다.
이문제도 정말 쉽다.빠르게 풀어보자.
#undef _FORTIFY_SOURCE #include <stdio.h> #include <stdlib.h> #include <unistd.h> void vulnerable_function() { char buf[128]; read(STDIN_FILENO, buf, 256); } void be_nice_to_people() { 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); }
저번 문제와 동일하게 ida로 열어보면 not_colled함수가 있는 것을 볼 수 있다.
하지만 저번에는 /bin/sh을 불러왔다면 이번에는 /bin/date를 불러온다.
그렇지만 이문제도 간단하다.왜냐하면 문제에 문자열을 넣어 놨는데 그문자열을 이용해서 문제를 풀 수 있다.
ida에서 shift+f12를 누르면 파일에 있는 문자열들을 볼 수 있다.
찾아보면 /bin/bash라는 문자열이 보일 것 이다.
이것을 system함수의 인자로 넘겨주면 bash쉘을 딸 수 있을 것이다.
/bin/bash의 주소까지 써있다.역시 ida!
gdb로 system함수의 주소까지 구해준 후!
bash쉘을 따내었다!
'SYSTEM HACKING > 문제 풀이' 카테고리의 다른 글
[ROP 문제]2013 Pico ctf rop-4 (0) | 2017.12.20 |
---|---|
[ROP 문제]2013 Pico ctf rop-3 (0) | 2017.12.18 |
[ROP 문제]2013 Pico ctf rop-1 (0) | 2017.12.13 |
[ROP 문제]DEFCON2015문제 r0pbaby (0) | 2017.12.11 |
[ROP 문제]우분투 CTF 문제 small (0) | 2017.11.25 |