본문 바로가기

시스템해킹

(42)
[드림핵] 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..
[드림핵] 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..
[드림핵] No mov풀이 시스템 해킹을 처음 시작할때 쉘코드 부터 시작했었는데이번에는 좀더 어려운 쉘코딩을 하는 것 같다   보호기법 확인64 amd 에 보호기법이 전부 적용되어있다     문제 코드#include #include #include #include #include #include #include #include #include void initialize() { setvbuf(stdout, 0, _IONBF, 0); setvbuf(stdin, 0, _IOLBF, 0); setvbuf(stderr, 0, _IOLBF, 0);}int verify(uint8_t *sh, int len) { const uint8_t banned[] = { 0x88, 0x89, 0x8A, 0x8B, 0x8..