전체 글

* 깃허브: https://github.com/Ellie010707
언제나와 같이 ls명령어로 디렉토리를 확인해준 후 hint파일을 열어봅시다.버퍼오버플로우 문제입니다.(gets()함수는 크기에 제한을 두지 않음) 디버거로 메인함수를 확인해봅시다.main+3 부분에서 0x108(264)바이트의 메모리를 확보해둡니다. 즉, 메모리는 | buffer: 256 byte | dummy: 8 byte | SEP: 4 byte | RET: 4 byte | 이렇게 생겼습니다. export SHELLCODE = `python -c 'print"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"'` export 명령어로 SHELLCODE라는 환경변수를 만들어 준 후..
ls명령어로 디렉토리 안을 살펴봅시다."attackme" 라는 실행파일과 hint파일이 보입니다.cat명령어로 힌트파일의 내용을 확인했습니다. gdb로 attackme의 실행 과정을 확인해보려 하니 권한이 없다 뜨기에 힌트로 주어진 소스코드를 /tmp디렉토리에 복사하여 attackme.c라는 파일을 만들어주었습니다.attackme.c를 attackme라는 실행파일로 만들어줍시다. 만든 attackme실행파일을 디버거로 확인해봅시다. main+3 에서 0x108의 공간을 할당해주는데 0x108은 10진수로 264바이트입니다.그러나 선언해준 배열의 크기는 256바이트이므로 나머지 8바이트는 더미 값 입니다.따라서 이 실행파일의 메모리의 구조는 | buffer: 256 byte | dummy: 8 byte |..
ls명령어를 통해 디렉터리 안을 확인하고 hint파일의 내용을 cat명령어로 봅니다.key_t = 7530 -> 공유 메모리를 구별하는 식별 번호가 7430임을 확인. ------------ 공유 메모리란?공유 메모리(Shared memory)는 컴퓨터 환경에서 여러 프로그램이 동시에 접근할 수 있는 메모리입니다..그림으로 그려서 나타내자면, 원래 프로세스는 이렇게 각각의 메모리를 가지고있는 상태이지만 만약 프로세스 b가 공유 메모리를 만든다면 이렇게 접근 권한이 있는 모든 프로세스에서 공유 메모리로 접근이 가능합니다. ------------ 문제에서 공유 메모리를 언급하였고 key값도 주어졌으니 공유 메모리에 접근할 실행파일을 만들어줍시다. *shmget() 함수* int shmget(key_t key..
ls명령어로 디렉토리에서 hint파일을 찾고 cat명령어로 hint파일의 내용을 봅시다.버퍼오버플로우 문제입니다.여기서 취약점이 발생하는 함수는 바로 fgets입니다. buf배열의 크기는 10바이트이지만 fgets함수에서는 40바이트를 받을 수 있습니다. 이는 buf에 10바이트 이상의 값을 집어넣어 buf2의 위치에도 값이 들어가게끔 할 수 있다는 것을 뜻합니다. 그냥 실행시켜보았습니다.스크린샷은 못 찍었지만 a 10개를 입력한 후 go를 입력해보았습니다.그래도 아무것도 나타나지 않아 buf와 buf2사이의 더미 값을 구하기 위해 buf실행 파일의 코드를 gdb로 컴파일 시켜보았습니다. 그러자 퍼미션이 거부당했다 떳습니다. 그러므로 힌트파일의 내용을 /tmp디렉토리에 임의의 c파일로 복사해줍시다. vi..
lim.dev
코딩림