Pwnable (47) 썸네일형 리스트형 [Dreamhack] basic_exploitation_001 Write-Up Description이 문제는 서버에서 작동하고 있는 서비스(basic_exploitation_001)의 바이너리와 소스 코드가 주어집니다.프로그램의 취약점을 찾고 익스플로잇해 "flag" 파일을 읽으세요."flag" 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다.플래그의 형식은 DH{...} 입니다. #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_handle.. [DreamHack] Return Address Overwrite Write-Up // Name: rao.c// Compile: gcc -o rao rao.c -fno-stack-protector -no-pie#include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0);}void get_shell() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL);}int main() { char buf[0x28]; init(); printf("Input: "); scanf("%s", buf); return 0;}buf 배열은 0x28 바이트 크기로 선언된 40바이트 크기의 버퍼인데, scanf 함수를 사용하여.. [DreamHack] shell_basic Write-Up Description입력한 셸코드를 실행하는 프로그램이 서비스로 등록되어 작동하고 있습니다.main 함수가 아닌 다른 함수들은 execve, execveat 시스템 콜을 사용하지 못하도록 하며, 풀이와 관련이 없는 함수입니다.flag 파일의 위치와 이름은 /home/shell_basic/flag_name_is_loooooong입니다.감 잡기 어려우신 분들은 아래 코드를 가지고 먼저 연습해보세요!플래그 형식은 DH{...} 입니다. DH{와 }도 모두 포함하여 인증해야 합니다. 문제에서는 execve, execveat를 사용하지 못하도록 했으며, flag를 읽어야 하므로 orw (Open Read Write) 셸코드를 사용하는 것으로 보인다. // shell_basic.c// Compile: gcc .. [DreamHack] hook Write-Up 문제코드 // gcc -o init_fini_array init_fini_array.c -Wl,-z,norelro#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);} int main(int argc, char *argv[]) { long *ptr; size_t size; initialize(); printf("st.. [DreamHack] oneshot Write-Up Description이 문제는 작동하고 있는 서비스(oneshot)의 바이너리와 소스코드가 주어집니다.프로그램의 취약점을 찾고 셸을 획득한 후, "flag" 파일을 읽으세요."flag" 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다.플래그의 형식은 DH{...} 입니다. one_gadget은 Glibc 바이너리 내에서 쉘을 실행하는 특정 코드 시퀀스를 의미한다. 이 가젯을 통해 특정 조건이 충족되면 직접 쉘을 실행할 수 있다. one_gadget의 가장 큰 장점은 '단일 가젯으로 쉘을 획득할 수 있다'는 점이다. **one_gadget을 이용한 익스플로잇 단계One_gadget 위치 찾기: one_gadget 도구(특정 Glibc 바이너리에서 이러한 가젯을 찾는 도구)를 사용하.. [DreamHack] fho 문서화 | docker로 ubuntu 18.04에서 pwnable환경 세팅 : pwndbg.ver | 도커 파일 옮기기 Exploit Tech: Hook Overwrite | Dreamhack Hook==갈고리Hooking(후킹) : CS에서는 OS가 어떤 코드를 실행하려 할 때, 이를 낚아채어 다른 코드가 실행되게 하는 것. 이때 실행되는 코드를 Hook(훅)이라고 부름 Hook 을 이용한 공격방법 : 훅 오버라이트(Hook Overwrite) - 훅의 특징을 이용한 공격 기법Glibc 2.33 이하 버전에서 libc 데이터 영역에는 malloc()과 free()를 호출할 때 함께 호출되는 훅(Hook)이 함수 포인터 형태로 존재한다. 이 함수 포인터를 임의의 함수 주소로 오버라이트(Overwrite)하여 악의적인 코드를 실행하는 기법. Full RELRO가 적용되더라도 libc의 데이터 영역에는 쓰기가 가능하므로 F.. [DreamHack] basic_rop_x64 Write-Up #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(30);}int main(int argc, char *argv[]) { char buf[0x40] = {}; initialize(); read(0, buf, 0x400); write(1, buf, sizeof(buf)); return 0;}buf[0x40]read 함수와 w.. [DreamHack] basic_rop_x86 Write-Up Description이 문제는 서버에서 작동하고 있는 서비스(basic_rop_x86)의 바이너리와 소스 코드가 주어집니다.Return Oriented Programming 공격 기법을 통해 셸을 획득한 후, "flag" 파일을 읽으세요."flag" 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다.플래그의 형식은 DH{...} 입니다. NX 보호 기법이 걸려있다. ** NX 보호 기법 적용시 : 실행에 사용되는 메모리 영역과 쓰기에 사용되는 메모리 영역 분리되어 있음-> 버퍼에 쉘 코드를 주입하거나 주입한 쉘 코드 실행 X 문제코드#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit.. 이전 1 2 3 4 5 6 다음 목록 더보기