[- Disclaimer -]
아래 내용은 정보보안 공부 목적으로 작성된 것이나, 이를 토대로 허가되지 않은 대상에 실습을 진행할 경우 해킹 시도로 간주하여 법적 처벌을 받을 수 있음을 알려 드립니다.
WinExec()
✦ 특정 Application 실행 함수
✦ Parameter1에 전달되는 Argument1
✧ 파일명 및 추가적인 Parameter
→ 파일명 못 찾을 시 아래 경로를 뒤져 찾기
ㄴㄴ 1) 현재 Directory
ㄴㄴ 2) Windows System Directory // GetSystemDirectory() 사용
ㄴㄴ 3) Windows Directory // GetWindowDirectory() 사용
✦ Parameter2에 전달되는 Argument2
✧ Display 옵션
SW_SHOW: Window 창 표시
SW_HID: Window 창 숨김
SW_SHOWMAXIMIZED: Window 창 전체 화면으로 Window 창 표시
Plain Text
복사
✦ Return 값
✧ GetMessage() 호출 및 Time Out 도달 시 Return
→ Time Out 동안 기다리는 것이 싫으면 WinExec()에 의해 시작된 Process에게 가능한 빨리 GetMessage()를 호출하게 함
✧ 성공
→ 31보다 큰 값
✧ 실패
→ 0: Out of Memoey 혹은 Out of Resource
→ Error Code: Description
→ ERROR_BAD_FORMAT: 유효하지 않은 .exe 형식의 실행 불가 파일
→ ERROR_FILE_NOT_FOUND: 파일을 찾을 수 없음
→ ERROR_PATH_NOT_FOUND: 파일 경로를 찾을 수 없음
✦ 취약 함수
✧ lpCmdLine은 공백 구분으로 다음 Parameter로 넘어가는데 이따 파일명에 임의 공백 삽입 후 원하는 파일 이름을 넣을 시 임의 파일 실행 가능
→ CreateProcess() 사용
→ 구지 해당 함수 써야한다면 파일명에 따옴표로 둘러싸기
UINT WINAPI WinExec(LPCSTR lpCmdLine, UNIT uCmdShow);
Plain Text
복사



