Fascination
article thumbnail
[Dreamhack] Return Oriented Programming
War Game & CTF/Dreamhack 2022. 9. 14. 16:13

rop Exploit Tech: Return Oriented Programming에서 실습하는 문제입니다. # 문제 분석 - ROP (Return Oriented Programming) 리턴 가젯을 사용하여 복잡한 실행 흐름을 구현하는 기법 ROP 페이로드는 리턴 가젯으로 구성되며, ret 단위로 여러 코드가 연쇄적으로 실행되는 모습에서 ROP Chain이라고도 불림 - 소스코드 저번 문제와 달리 system 함수를 호출하지 않아 PLT에 등록되지 않으며 "/bin/sh" 문자열도 데이터 섹션에 기록되지 않음 따라서 system 함수를 익스플로잇에 사용하기 위해서는 함수의 주소를 직접 구해야하고 "/bin/sh" 문자열을 사용할 다른 방법을 고민해보아야 함 // Name: rop.c // Compile:..

article thumbnail
[Dreamhack] Return to Library
War Game & CTF/Dreamhack 2022. 9. 7. 11:39

Return to Library Exploit Tech: Return to Library에서 실습하는 문제입니다. # Review Return Address Overwrite: 반환 주소를 악성 함수의 주소로 덮어서 셸 획득 Stack Canary: 스택 프레임의 반환 주소 전에 랜덤한 카나리를 주입하여 반호나 주소를 덮기 어렵게 함 Return to Shellcode: 카나리를 우회하고, 셸 코드를 주입한 버퍼의 주소로 반환 주소를 덮어서 셸 획득 ASLR: 임의 버퍼의 주소를 알기 어렵게 함 NX: 각 세그먼트에 불필요한 실행권한을 제거함으로써 공격자가 임의 버퍼에 주입한 코드를 실행하기 어렵게 함 # 문제 분석 - Return to Library NX로 인해 공격자가 버퍼에 주입한 셸 코드를 실행하..

article thumbnail
[Dreamhack] Return to Shellcode
War Game & CTF/Dreamhack 2022. 9. 5. 03:08

Return to Shellcode Exploit Tech: Return to Shellcode에서 실습하는 문제입니다. # 문제 분석 - Return to Shellcode 반환 주소를 shellcode가 저장된 곳으로 우회하여 프로그램의 실행 흐름을 조작하는 것 해당 문제는 카나리를 우회하고, 쉘 코드와 Return Address Overwrite를 이용하여 쉘을 획득할 수 있음 - Checksec 카나리가 적용되어 있음 - 소스코드 buf의 주소 및 rbp와 buf 사이의 주소 차이를 알려줌 스택 버퍼인 buf에 총 두 번의 입력을 받음 → 두 입력 모두에서 오버플로우 발생 // Name: r2s.c // Compile: gcc -o r2s r2s.c -zexecstack #include #incl..

article thumbnail
[Dreamhack] Return Address Overwrite
War Game & CTF/Dreamhack 2022. 9. 1. 17:21

Return Address Overwrite Exploit Tech: Return Address Overwrite에서 실습하는 문제입니다. # 문제 분석 - Return Address Overwrite 오버플로우 발생 시 반환 주소(Return Address)를 조작하여 실행흐름을 바꾸는 기법 - checksec - 함수 목록 get_shell 함수를 이용하면 쉘을 획득할 수 있을 것임 - main 함수 scanf는 길이 검증을 하지 않기 때문에 buffer의 크기를 넘어 스택 영역을 덮어 쓸 수 있을 것임 %s는 문자열을 입력받을 때 사용하는 것으로, 입력의 길이를 제한하지 않으며, 공백인 문자로 띄어쓰기, 탭, 개행 문자 등이 들어올 때까지 계속 입력을 받는다는 특징이 있음 정확히 n개의 문자만 입력..