본문 바로가기

Hacking/DreamHack15

[DreamHack] 드림핵 basic_exploit_003 문제 확인 해당 문제는 bof 취약점을 활용하여 리턴 어드레스의 값을 변조하여 flag를 획득하는 문제이다.서비스 분석 해당 프로그램을 실행시키면 입력을 받게 되며 입력받은 문자를 ECHO 하는 것을 확인할 수 있다.GDB를 통해 어셈블리어를 확인하면 위와 같은 구조를 확인할 수 있다. 소스 코드 위 소스코드에서는 get_shell이라는 함수와 main함수를 중요하게 확인하면 된다.코드 라인설명15~17get_shell이라는 함수는 system함수를 사용해서 /bin/sh을 실행한다. 즉, 쉘을 실행하는 함수이다.19heap_buf라는 변수에 0x80만큼 동적 메모리 공간을 만들어 준다.20stack_buf라는 변수에 0x90만큼의 리스트를 만든다.22read함수를 통해 heap_buf에 0x80만큼의 .. 2024. 10. 31.
[DreamHack] 드림핵 baby-bof 문제 확인 해당 문제는 버퍼 오버플로우 취약점을 사용하여 리턴 어드레스의 값을 덮어쓰도록 하여 flag를 획득하는 문제이다. 서비스 분석먼저 해당 프로그램을 실행하면 특정 메모리 주소를 출력하며 name을 입력받는다. 임의의 값 "test"를 입력하고 실행 시 메모리 주소와 value를 출력하며 hex value를 입력받는다. hex value의 값으로 임의의 값 AAAA를 입력하였으며 그 후에 입력을 요구하는 integer count값으로는 3을 입력하였다.위와 같이 입력하게 되면 내가 입력한 hex 데이터가 count만큼 메모리에 저장되는 것을 확인할 수 있다. 소스 코드 위 코드에서 중요하게 봐야 할 부분은 아래 표에 설명되어 있다.코드 라인설명16win이라는 함수를 생성한다.22~24./flag파.. 2024. 10. 30.
[DreamHack] 드림핵 bof 문제 확인해당 문제는 버퍼 오버 플로우 취약점을 활용하여 flag파일을 읽어오는 문제이다. 서비스 분석 파일 실행 시 meow?라는 문자와 함께 입력을 받게 된다.입력값을 입력 시 동일 경로에 저장되어 있는 cat.txt를 실행한 후 종료한다.소스 코드문제에서 제공되는 소스코드는 없지만 IDA를 사용하여 디컴파일하였다. main 함수 코드 라인설명3~4128크기의 변수와 16크기의 변수를 생성한다.7v5변수에 "./cat"이라는 문자열을 대입한다.8~9meow?를 화면에 출력한 후 144만큼의 데이터를 입력받아 v4에 저장한다.10read_cat이라는 함수를 "./cat"이라는 문자열을 사용하여 동작한다.11meow : {입력받은 값}  의 형태로 출력을 하고 프로그램을 종료한다. 문제 해결main 함수.. 2024. 10. 28.
[DreamHack] 드림핵 shell_basic 문제 확인 해당 문제는 시스템의 파일을 읽어오는 쉘코드를 작성하는 문제이다서비스 분석 해당 파일을 실행할 경우 shellcode를 입력받으며원하는 값이 들어오지 않을 경우에는 세그멘테이션 오류가 발생한다.소스 코드 코드에 여러 함수가 보이지만 문제 설명에서 보았듯 풀이와 관련 없는 함수이므로 우리는 main함수의 코드에만 집중하면 된다. 코드 라인설명39mmap 함수를 사용하여 shellcode라는 변수에 rwx의 권한을 가진 메모리 공간을 부여한다40생성된 shellcode의 메모리 공간 중 시작 주소를 저장하기 위한 포인터 함수를 생성46~47사용자에게 0x1000만큼의 데이터를 입력 받는다49~50입력받은 shellcode를 실행하는 코드 *mmap() : 메모리 매핑을 제공하는 함수로 파일과 메모.. 2024. 10. 28.