목차 STM32 개발 환경 정보 STM32F103VGT6 (LQFP100) 사용 STM32CubeMX Version 6.1.2 사용 STM32CubeIDE Version 1.10.0 사용 테스트 목적 회로카드에 Ethernet 케이블만을 을 사용하여 어플리케이션을 다운로드 하기위해 테스트 하였으며, W5500칩 라이브러리의 FTP Client를 수정하여 사용하였다. STM32F103VGT6 Flash 메모리 정보 아래 데이터시트 내용에 따르면 STM32F103xG 모델은 XL-density devices 1024 Kbytes 크기의 내장 Flash 메모리를 탑제하고 있음을 알 수 있다. PM0068 STM32F10xxx XL-density Flash programming (version 2.3) Flas..
Edit 관련 단축키 뒤로 이동 : Alt+Left 앞으로 이동 : Alt+Right 라인으로 바로 이동 : Ctrl+L 범위안의 트리거 완성 : Ctrl+Space 복사된 텍스트 히스토리: Ctrl+Shift+V 폰트 작게 : Ctrl+- (Ctrl+Roll mouse wheel down) 폰트 크게 : Ctrl++ (Ctrl+Roll mouse wheel up) 블럭 끝으로 커서 이동 : Ctrl+] 블럭 앞으로 커서 이동 : Ctrl+[ 한줄 주석 처리 : Ctrl+/ Signal, slots 수정 : F4 북마크 생성 : Ctrl+M 다음 북마크로 이동 : Ctrl+. 이전 북마크로 이동 : Ctrl+, 모두 찾기 : Ctrl+Shift+F 이름 다시 짓기 Ctrl+Shift+R 디버깅 관련 단축..
1. BIOS 설정 고급 > APM Configuration 에서 ERP 항목을 Disable 한다. Power on by PCI-E 항목을 켠다. 2. Windows Ethernet Driver 설정 전원관리 탭에서 절전 옵션은 모두 체크 해제한다. Waek on LAN 관련 황목을 모두 체크 한다. 3. Resister Edit "HEKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power" 위 레지스터 경로에서 HiberbootEnabled 값을 0으로 변경 한다. 4. IP TIME 설정 WOL 및 DDNS 설정을 한다. 5. 모바일 WOL 어플 설치 및 연결 IP TIME WOL 모바일 어플을 설치하고 DDNS 정보를 입력..
1. BIOS 설정 고급 > APM Configuration 에서 ERP 항목을 Disable 한다. Power on by PCI-E 항목을 켠다. 2. Windows Ethernet Driver 설정 전원관리 탭에서 절전 옵션은 모두 체크 해제한다. Waek on LAN 관련 황목을 모두 체크 한다. 3. Resister Edit "HEKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power" 위 레지스터 경로에서 HiberbootEnabled 값을 0으로 변경 한다. 4. IP TIME 설정 WOL 및 DDNS 설정을 한다. 5. 모바일 WOL 어플 설치 및 연결 IP TIME WOL 모바일 어플을 설치하고 DDNS 정보를 입력..
메모리 보호 기법 확인 1. ASLR(Address Space Layout Randomization ASLR의 존재 여부는 Process의 정보를 담고있는 /proc/[PID]/maps 라는 파일을 확인. 만일 ASLR이 걸려있다면, maps 파일을 확인할 때마다 Stack이나 Library의 주소 영역이 매번 변함. 2. SSP(Stack Smashing Protector) 결과로는 SSP는 존재하지 않는다. 3. NX bit(Never eXecute bit) NX bit가 걸려있어 Stack 에서의 임의의 코드 실행이 불가능하다. 4. PIE(Position Independent Executable) 결과로는 PIE는 존재하지 않는다. 5. ASCII-Armor 결과로는 ASCII-Armor가 걸려있..
Free Training Zone level20 풀이 cat 를 사용하여 hint 출력 코드를 살펴보면 fgets에서 79로 입력 사이즈를 제한 함으로 버퍼오버플로우 로는 접근할 수 없다. printf 를 살펴보면 형식 지정자 없이 사용함으로 pritnf("%s", bleh);처럼 동작 될것을 예상 할 수 있다. 위와 같이 형식 지정자를 이용해서 프로그램을 실행 시켜보면 %x 3번째 이후 AAAA의 값이 출력되는 것을 알 수 있다. 이와같이 Format String Bug를 이용하여 level21 계정에 접근하면 되겠다. dotrs 주소 확인 return 주소를 확인하기 위해 gdb로 main 함수를 disassembler 하려 했으나, 아래와 같이 접근이 막혀 있었다. 이때 사용할 수 있는 것은 .do..
Free Training Zone level19 풀이 1. cat을 사용하여 hint 출력 코드를 살펴보면 buf의 오버플로우를 이용하여 return 주소에 접근하여 shellcode를 실행시키면 level20 shell에 접근할 수 있다. 2. attackme 복사 gdb 분석을 위해 쓰기권한이 있는 tmp 디렉터리로 attackme 파일을 복사한다. 3. gdb 분석 위 disassembler 를 스택으로 표현하면 아래와 같다. 4. shellcode 환경변수 등록 및 주소 찾기 export 명령을 사용하여 41byte shell code 환경변수에 등록한다. 환경변수 shellcode의 주소를 출력하는 코드를 위와 같이 작성하여 주소를 확인한다. 5. 페이로드 코드 작성 위 와같이 스택을 토대로 4..
Free Training Zone level18 풀이 1. cat을 사용하여 hint 출력 코드를 살펴보면 check 변수에 0xdeadbeef 값을 넣으면 shellout 함수가 호출되어 level19 shell에 접근이 가능하다 하지만 check 변수가 string 버퍼보다 이후에 선언되어 버퍼 오버플로우로는 접근이 불가능해 보인다. 대신 read 함수로 1byte씩 입력 받는 값이 0x08이면 count 변수가 마이너스가 되어 string 버퍼 주소의 마이너스 주소에 접근 할 수 있다. 2. attckme 파일 복사 gdb 분석을 위해 쓰기권한이 있는 tmp 디렉터리로 attckme 파일을 복사한다. 3. gdb 분석 string 버퍼는 아래와 같이 ebp-100에 위치하였다. check 변수는 아..