[Dreamhack] Return to Shellcode
·
Pwnable/Dreamhack
Return to ShellcodeDescription Exploit Tech: Return to Shellcode에서 실습하는 문제입니다.dreamhack.ior2s.c보호기법 확인64bit 바이너리이다.카나리가 적용되어 있다.PIE enabled -> random address코드 분석buf 의 주소buf 의 주소 및 rbp 와 buf 사이의 주소 차이를 알려준다.Stack Buffer over FlowStack Buffer 인 buf 에 총 두 번의 입력을 받는다.두 입력 모두에서 Over Flow 가 발생한다는 것을 알 수 있다. 이 취약점들을 이용해서 쉘을 획득해보자.익스플로잇 시나리오(문제 풀이)카나리 우회두 번째 입력으로 반환 주소를 덮을 수 있다.하지만 카나리가 조작되면 __stack_ch..
[Dreamhack] basic_exploitation_000
·
Pwnable/Dreamhack
basic_exploitation_000Description 이 문제는 서버에서 작동하고 있는 서비스(basic_exploitation_000)의 바이너리와 소스 코드가 주어집니다. 프로그램의 취약점을 찾고 익스플로잇해 셸을 획득한 후, "flag" 파일을 읽으세요. "fdreamhack.iobasic_exploitation_000.c코드 해석main 함수를 살펴보자.buf 에 0x80 만큼 사이즈가 할당된다.즉, 128byte 가 할당된다는 뜻이다.initialize 함수가 실행된다.buf 의 주소를 출력해주고, scanf 를 통해서 입력받는다.buf 의 크기는 128byte 인데, scanf 로 141byte 를 입력받기 때문에 Buffer Over Flow 가 발생할 수 있다.문제 해석소스코드에서 ..
[Dreamhack] basic_exploitation_001
·
Pwnable/Dreamhack
basic_exploitation_001Description 이 문제는 서버에서 작동하고 있는 서비스(basic_exploitation_001)의 바이너리와 소스 코드가 주어집니다. 프로그램의 취약점을 찾고 익스플로잇해 "flag" 파일을 읽으세요. "flag" 파일의 내용dreamhack.iobasic_exploitation_001.c코드 해석buf 배열에 0x80(128byte) 만큼 할당되어 있다.gets() 함수로 크기에 제한 없이 입력이 가능하므로 Buffer Over Flow 공격이 가능하다.문제 해석read_flag() 함수를 실행시키면 flag 파일을 읽을 수 있다.즉, RET 에 read_flag() 함수 주소가 들어가게 하면 된다는 뜻이다.GDB 정적 분석 - 함수 주소main 주소 :..
[Dreamhack] Return Address Overwrite
·
Pwnable/Dreamhack
Return Address OverwriteDescription Exploit Tech: Return Address Overwrite에서 실습하는 문제입니다.dreamhack.iorao.c코드 해석Stack Buffer Over Flow 가 발생할 수 있는 코드이다.x64 체제이다.main 함수에서 scanf("%s", buf); 에서 문자열의 길이를 지정하지 않았기 때문에 취약점이 발생할 수 있다.이는 함수의 문자열 길이를 길게 주게 되면 main 함수의 반환 주소를 덮을 수 있다는 뜻이다.문제 해석Stack Buffer Over Flow 취약점을 발생시켜 buffer 가 정리될 때 get_shell() 함수로 return 되게 스택을 덮어쓰면 되는 문제이다.해결방안n 개를 정확히 입력 받는 형태로 사..
[Dreamhack] shell_basic
·
Pwnable/Dreamhack
shell_basicDescription 입력한 셸코드를 실행하는 프로그램이 서비스로 등록되어 작동하고 있습니다. main 함수가 아닌 다른 함수들은 execve, execveat 시스템 콜을 사용하지 못하도록 하며, 풀이와 관련이 없는dreamhack.ioshell_basic.c123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051// Compile: gcc -o shell_basic shell_basic.c -lseccomp// apt install seccomp libseccomp-dev #include fcntl.h>#include seccomp.h>#include stdio.h>#in..