Hackerschool FTZ의 Level 13 풀이입니다. 버퍼 오버플로우를 일으켜야 하는데 i 값을 보존시키면서 쉘코드를 삽입해야 할 것 같습니다, main 함수를 분석해보니 변수 i의 값을 보존시켜야만 한다는 것만 제외하면, 기존의 문제와 같게 strcpy 함수를 이용해서 버퍼 오버플로우 공격을 해야 하네요. 입력받은 값을 0xfffffbe8부터 붙였는데 0xfffffff4가 변수 i 값입니다. 0xfffffff4 - 0xfffffbe8 = 1036 그러므로 1036개의 값 뒤에 변수 i의 값을 넣고 ebp-4 까지 덮어 씌어주기 위해 12byte를 더 쓰고 RET과 더미 크기만큼인 4byte, 그리고 공격 코드를 넣어주는 방식으로 쉘코드를 작성하면 될 것 같습니다. 변수 i 값과 버퍼값을 비교하는..
IDA와 올리디버거로 지뢰찾기를 분석해서 지뢰찾기 게임의 맵 정보를 찾았습니다. 이 부분을 검색해서 실시간으로 게임의 맵 정보를 출력해주는 맵 핵 프로그램을 만들었습니다. 아래는 프로젝트의 소스코드입니다. 자세한 코드 설명은 주석에 달아놓았습니다! ※github : https://github.com/A6ly/WinmineMapHack #include #include #include #include #include #include #define BUFFER_SIZE 512 #define MAP_SIZE 700 typedef struct { BYTE MaxWidthX; BYTE MaxHeightY; BYTE ALLMineCount; }GameInfo; const unsigned int ADR_MINE_MEM..
Hackerschool FTZ의 Level 12 풀이입니다. level 11과 굉장이 비슷하지만 입력받는 함수가 다르네요. 입력을 strcpy가 아닌 gets로 받아서 main 함수의 인자로 넘겨 줄 수 없어서 입력 대기 상태에서 입력해주어야 합니다. 먼저 버퍼의 크기를 알아내 보겠습니다. 0x08048473과 0x08048479에서 264와 8, 총 272를 빼주고 있습니다. 메모리 구조는 다음과 같습니다. [Buffer(256)][dummy(8)][SFP(4)][RET(4)] level 11과 같은 메모리 구조로 되어 있네요. 이제 버퍼를 저장하는 주소를 찾아보겠습니다. 버퍼가 저장되는 주소는 0xbfffdfc0이네요. gets는 입력 대기 상태에서 값을 입력받으므로 위처럼 공격 코드를 괄호로 묶어주..
- Total
- Today
- Yesterday
- Level 05
- Level 03
- C#
- 풀이
- 안드로이드 멘토링
- Android
- Reversing
- wargame
- pwnable
- Level 06
- c++
- Basic RCE
- Advance RCE
- hackerschool
- CodeEngn
- ftz
- 안드로이드
- 17th HackingCamp CTF
- Write-up
- xcz.kr
- unity2d
- 멘토링
- Level 04
- 유니티
- Level 02
- Unity
- HackingCamp
- Programming
- reversing.kr
- Level 01
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |