728x90
이번에는 pico ctf의 문제 rop-1 푼것을 적어 보겠다.
난이도는 정말 쉬웠고,몇분 걸리지도 않았다.
#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_called()라는 함수가 있는 것을 볼 수 있다.
not_called()함수에는 system("/bin/sh")을 해주는 코드가 있다.
그냥 saved eip에 not_called함수의 주소를 적어주면 코드의 흐름이 not_called함수로 갈 것이다.
ida로 열어서 buf의 offset을 구해보자.
bp-88h을 보면 buufer의 offset을 알 수 있다.
h는 hex를 가르키니 88의 hex값을 dec로 바꾼 136의공간을 채워준 후 saved ebp까지 140을 채워주면 된다.
이번에는 not_called함수의 주소를 확인하자.
간단하게 구해줬다.
'SYSTEM HACKING > 문제 풀이' 카테고리의 다른 글
[ROP 문제]2013 Pico ctf rop-3 (0) | 2017.12.18 |
---|---|
[ROP 문제]2013 Pico ctf rop-2 (0) | 2017.12.13 |
[ROP 문제]DEFCON2015문제 r0pbaby (0) | 2017.12.11 |
[ROP 문제]우분투 CTF 문제 small (0) | 2017.11.25 |
[ROP 문제]ropasaurusrex (0) | 2017.11.24 |