본문 바로가기

전체 글

(67)
[드림핵] rtld 풀이 문제코드// gcc -o rtld rtld.c -fPIC -pie#include #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1);}void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(60);}void get_shell() { system("/bin/sh");}int main(){ long addr; long value; initialize(); printf("stdout:..
[드림핵] Overwrite _rtld_global 풀이 rtld_global을 이용하는 문제이다    문제코드// Name: ow_rtld.c// Compile: gcc -o ow_rtld ow_rtld.c#include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0);}int main() { long addr; long data; int idx; init(); printf("stdout: %p\n", stdout); while (1) { printf("> "); scanf("%d", &idx); switch (idx) { case 1: printf("addr: "); scanf("%ld", &addr); ..
[드림핵] __environ 풀이 보호기법   문제코드// Name: environ.c// Compile: gcc -o environ environ.c#include #include #include #include #include void sig_handle() { exit(0);}void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); signal(SIGALRM, sig_handle); alarm(5);}void read_file() { char file_buf[4096]; int fd = open("./flag", O_RDONLY); read(fd, file_buf, sizeof(file_buf) - 1); close(fd);}int main() { char..
Docker 사용법 (포너블) 이번에 적을 방법은 드림핵에서docker를 필수적으로 사용해야 할때docker 자체에서 gdb나 pwndbg를 설치했을시에offset이 달라지는것을 방지하기 위해docker에서 exe를 실행하고 로컬에서 gdb를 사용하는 방식이다 참고한 블로그 https://minseosavestheworld.tistory.com/119 이 방법에 장점은 문제파일에서 제공하는 dockerfile을 수정하지 않고그대로 gdb로 확인할 수 있다는 점이  docker 사용법   이미지 생성(Dockerfile 있는 상태로) 현재 디렉토리 dockerfile 빌드sudo docker build .or 이미지 이름 지정sudo docker build -t dockername .  컨테이너 생성sudo docker run -d -..
[드림핵] master_canary 풀이 문제파일에서 docker파일이 존재하기 때문에docker 환경으로 디버깅을 진행했다docker exe 실행 -> 로컬 gdb attach 방식    문제코드// gcc -o master master.c -pthread#include #include #include #include #include char *global_buffer;void alarm_handler() { puts("TIME OUT"); exit(-1);}void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(60);}void get_shel..
[드림핵] Master Canary 풀이 이번 문제는 canary를 단순히 leak하는게 아니라canary base인 master canary값을 변조하는 문제이다   문제코드// Name: mc_thread.c// Compile: gcc -o mc_thread mc_thread.c -pthread -no-pie#include #include #include #include void giveshell() { execve("/bin/sh", 0, 0); }void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0);}void read_bytes(char *buf, int size) { int i; for (i = 0; i  문제 코드를 보면 main에서 pthread_create 함수를..
[드림핵] seccomp 풀이 보호기법을 보면 aslr 여부가 안적혀있다    문제코드// gcc -o seccomp seccomp.cq#include #include #include #include #include #include #include #include #include #include #include #include int mode = SECCOMP_MODE_STRICT;void alarm_handler() { puts("TIME OUT"); exit(-1);}void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(60);}i..
[드림핵] Bypass SECCOMP-1 풀이 보호기법 확인    문제코드// Name: bypass_seccomp.c// Compile: gcc -o bypass_seccomp bypass_seccomp.c -lseccomp#include #include #include #include #include #include #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0);}void sandbox() { scmp_filter_ctx ctx; ctx = seccomp_init(SCMP_ACT_ALLOW); if (ctx == NULL) { exit(0); } seccomp_rule_add(ctx, SCMP_ACT_KILL, SCMP_SYS(o..