본문 바로가기

Wargame/[DreamHack]System Hacking

(4)
[DreamHack] basic_exploitation_001 드림핵 System Hacking 워게임 basic_exploitation_001 문제이다. #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); } void read_flag() { system("cat /flag"); } int main(int argc, char *argv[]) { char buf[0x80]; initialize(); gets(buf); return ..
[DreamHack] basic_exploitation_000 드림핵 System Hacking 워게임 basic_exploitation_000 문제이다. #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[0x80]; initialize(); printf("buf = (%p)\n", buf); scanf("%141s", buf); return 0; ..
[DreamHack] Return Address Overwrite 드림핵 System Hacking 워게임 Return Address Overwrite 문제이다. #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; } 1. 프로그램 분석 크기가 40바이트인 버퍼에 scanf로 입력받은 문자열을 저장하는 프로그램이다. 2. 취약점 분석 scanf("%s"..
[DreamHack] Shell_basic ※ [DreamHack] Shell_basic 문제 조건 1 : 입력한 셸코드가 실행되는 프로그램이다. 조건 2 : execve, execveat 시스템 콜을 사용하지 못한다. 조건 3 : flag 위치와 이름은 "/home/shell_basic/flag_name_is_loooooong"이다. ※ 풀이 조건 1을 통해 셸코드를 입력하면 실행되기 때문에 원하는 동작을 하는 셸코드를 작성해서 입력하여 flag 파일을 읽는다. 조건 2를 통해 셸을 획득하기 위해 execve 시스템 콜을 사용하면 안된다. 조건 3을 통해 flag 파일의 위치와 이름을 알기 때문에 파일을 읽고 출력하는 orw 셸코드를 작성해서 입력하면 flag 파일을 읽고 출력할 수 있다. orw 셸코드 작성법은 밑에 링크를 참조 [System..