Dreamhack 3

[Dreamhack] basic_exploitation_000

Description이 문제는 서버에서 작동하고 있는 서비스(basic_exploitation_000)의 바이너리와 소스 코드가 주어집니다.프로그램의 취약점을 찾고 익스플로잇해 셸을 획득한 후, "flag" 파일을 읽으세요."flag" 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다.플래그의 형식은 DH{...} 입니다.소스코드 분석 먼저 main()함수를 살펴보면buf 크기는 0x80(128바이트)이지만 scanf("%141s", buf)를 사용해 최대 141바이트를 입력받을 수 있다.buf의 크기보다 더 많은 데이터를 입력받을 수 있어서 오버 플로우 발생이 가능하다. initialize()함수를 보면alarm(30);을 호출해서 30초 후에 SIGALRM 시그널이 발생하도록 설정돼있..

[Dreamhack] Return Address Overwrite

Return address overwrite 스택 프레임의 반환 주소를 조작함으로써 프로세스의 실행 흐름을 바꾸는 공격 기법이다. 소스코드// Name: rao.c#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;}포맷스트링인 scanf("%s", buf) 부분을 보면 "%s"..

[Dreamhack] shell_basic

Description입력한 셸코드를 실행하는 프로그램이 서비스로 등록되어 작동하고 있습니다.main 함수가 아닌 다른 함수들은 execve, execveat 시스템 콜을 사용하지 못하도록 하며, 풀이와 관련이 없는 함수입니다.flag 파일의 위치와 이름은 /home/shell_basic/flag_name_is_loooooong입니다.감 잡기 어려우신 분들은 아래 코드를 가지고 먼저 연습해보세요!플래그 형식은 DH{...} 입니다. DH{와 }도 모두 포함하여 인증해야 합니다.  어셈블리어로 먼저 shellcode 파일을 생성해줌.nano write.asm //write.asm 파일 생성  먼저 문제를 보면 flag위치는 '/home/shell_basic/flag_name_is_loooooong'라고 함...