일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 정보보안
- BOJ
- 딥러닝
- C언어알고리즘
- 딥러닝파이썬
- 백준
- 신경망구현
- 스트림암호
- 달고나bof
- C언어 알고리즘
- c언어
- 신경망파이썬
- C알고리즘
- 알고리즘
- 신경망
- 소프트맥스함수
- 8086CPU레지스터
- 파이썬
- 머신러닝
- 백준알고리즘
- 보안
- 밑바닥부터시작하는딥러닝
- 인공지능
- FTZlevel10
- BOF
- 활성화함수파이썬
- 버퍼오버플로우
- 파이썬신경망
- 신경망 학습
- 항등함수
- Today
- Total
HeeJ's
Basic RCE L01 :: CodeEngn/BasicRCE 본문
문제 힌트를 읽어보면 HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가라고 적혀있다.
이 문제 힌트를 먼저 해결한 후, exe 파일을 열어보려고 한다.
위의 힌트를 해결하기 위해 GetDriveType 함수를 찾아보았다.
GetDriveType 함수의 원형은
UINT WINAPI GetDriveType(
_In_opt_ LPCTSTR lpRootPathName
);
이며 이 함수는 인자로 전달받은 드라이브가 어떤 종류의 드라이브인지 판별하여 리턴해줍니다.
이제 리턴 값들에 대해 알아보면 힌트에 대한 답을 찾을 수 있을 것이다.
리턴 값 | 상수 | 설명 |
0 | DRIVE_UNKNOWN | 알 수 없음 |
1 | DRIVE_NO_ROOT_DIR | 최상위 경로가 없음 |
2 | DRIVE_REMOVABLE | 이동형 저장장치 |
3 | DRIVE_FIXED | 고정형 저장장치 |
4 | DRIVE_REMOTE | 네트워크 Drive |
5 | DRIVE_CDROM | DVD/CD-ROM 유형 |
6 | DRIVE_RAMDISK | Ram Disk |
위의 표를 보면 HDD를 CD-Rom으로 인식시키기 위해 GetDriveTypeA의 리턴 값이 5여야 한다는 것을 알 수 있다.
이렇게 리턴 값을 찾아주었고, 이제 exe파일을 실행시켜보았다.
비슷한 말이 뜨는 것을 확인했고, 이 파일을 ollydbg로 열어보았다.
프로그램이 굉장히 간단하게 이루어져, 한 눈에 알아볼 수 있었다.
여기서 전해지는 리턴 값을 알기 위해 GetDriveTypeA의 다음 줄인 0040101D에 bp를 걸어준 후 실행시켜보았다.
EAX 값에 3이 전달되는 것을 확인할 수 있다.
이 이외에 따로 무언가를 입력해 flag를 얻는 문제인 것 같지 않아 Auth에 이 리턴 값을 입력해주었다.
출처
[1]lab.cliel.com/entry/GetDriveType-Disk-Drive-%EC%9C%A0%ED%98%95-%ED%8C%90%EB%8B%A8
'<CTF> > <CodeEngn>' 카테고리의 다른 글
Basic RCE L03 :: CodeEngn/BasicRCE (0) | 2021.04.26 |
---|---|
BasicRCE L02 :: CodeEngn/BasicRCE (0) | 2021.04.26 |
Basic RCE L18 :: CodeEngn/Basic RCE (0) | 2020.06.07 |
Basic RCE L16 :: CodeEngn/Basic RCE (0) | 2020.06.06 |
Basic RCE L11 :: CodeEngn/BasicRCE (0) | 2020.06.06 |