cdor1's lab
'UPX 패킹된 PE파일을 분석해보자' 1. UPX패커란? PE파일의 내부 코드와 데이터들을 감춰주는 패커의 한 종류이다. Ultimate Packer for eXcutables의 약자로 많이 쓰이는 PE파일 패커중 하나다. PEID로 PE파일의 정보를 보면 이렇다. (UPX패킹이 적용된 파일) (UPX패킹이 적용되지 않은 파일) 2. PEview를 통한 분석 먼저 가장 눈에 띄는 차이점부터 보자. (왼 UPX패킹 오 정상파일) IMAGE_NT_HEADERS 부분의 .textbss~.reloc영역이 단숨에 UPX0, UPX1, .rsrc영역으로 축소되었고.text~.reloc.섹션또한 UPX0, UPX1, .rsrc영역으로 축소되었다.이로써 패킹을 하게 되면 파일 크기가 줄어드는 것이다. 여기서 잠깐!왜..
코딩의 냄새가 난다.. 킁킁공유 메모리란 여러 개의 프로세스가 같은 메모리 영역을 공유해서 좀 더 효율적인 작업을 할 때 사용되는 방식이다. 일단 리눅스에서 공유 메모리를 확인할 수 있는 ipcs명령어를 이용해서 상태를 확인해 보았다.수상해 보이는 Shared Memory가 발견되었다. 근데 key가 16진수다.. 10진수로 한번 변환해 보자!0x00001d6a -> 7530문제에서 힌트로 준 key_t의 값과 동일하다!공유 메모리가 존재하는 것을 알았으니, 이젠 내용을 확인할 방법을 찾아야겠다.구글링을 해서 문제와 관련되어 보이는 shmget, shmat 함수를 찾았고 이를 이용해서 소스를 짜 보았다. 요로코롬!멍멍님과 구타님이 패스워드를 주고받으시는 모습을 볼 수 있었다. 헤헷 level11의 아이디..
오오 드디어 오버플로우 문제가 나왔군요!!buf2 배열에 go라는 문자열을 넣으면 쉘이 실행되면서 level10의 권한을 얻을수 있을것 같은데소스에서는 buf배열에서만 40바이트를 받고 있네요.. 여기서 잠깐!buf배열은 10바이트를 할당했는데 40바이트를 받겠다?10글자 이상을 입력하게되면 무슨 일이 벌어질까요?이것이 바로 스택 오버플로우입니다.입력받는 곳의 길이보다 입력한 문자의 길이가 더 길다면 문자가 넘쳐흘러서 다른 영역을 침범하게 되는데우리는 buf2 영역을 침범해서 go라는 문자열을 넣어주면 되겠군요!! 아직 스택의 상태가 어떤지 모르므로 이렇게 생각하고 한번 시도해 봅시다.(스택은 아래에서 위로 자란답니다)ㅎㅎ 기대도 안했어요 ㅠ왜냐하면!gcc로 컴파일하면서 생기는 더미가 존재하기 때문이죠!..