일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Basic RCE
- reversing
- CheatEngine Tutorial
- 1번문제
- 오토잇디컴파일
- 포렌식
- BasicRCE
- 치트엔진
- Couldn't in
- suninatas
- 워게임풀이
- cheatengine
- Couldn't invoke the file
- WTF_CODE
- WarGame
- 3번문제
- 써니나타스
- xcz.kr prob
- 리버싱
- 치트엔진 튜토리얼
- 치트엔진 튜토리얼 게임
- wargame.kr
- 워게임
- 6번문제
- xcz.kr 문제풀이
- 8번문제
- CodeEngn
- xcz.kr
- Web
- 시스템
- Today
- Total
HackChang
[xcz.kr] Prob19 19번 문제 풀이 본문
이번문제는 제목으로 봐서 리버싱 문제라는 생각을 했다.
우선 파일을 다운로드받아서 실행해보도록 하겠다.
운영체제가 프로그램을 보호하지만, 추가정보를 눌러서 실행하도록 하겠다.
위와 같은 화면이 출력된다.
우선 ADD기능을 실행해보도록 하겠다.
이런식의 내용으로 ADD을 실행했고, 같은 폴더에 log.txt파일이 생기고, 파일을 열면
1 hackchang 25 M A- - - - -
이런 텍스트가 추가되는 것을 볼 수 있다.
한명더 추가해보도록 하겠다.
1 hackchang 25 M A2 Hack 22 M B3 Hack 22 M A- - - - -
이런식으로 타입 뒤에 바로 다음 사람의 정보가 붙는 것을 볼 수 있었다.
해당 프로그램을 PEID에 먼저 올려보도록 하겠다.
c++로 만든 디버그 파일인 것을 알 수 있었다.
PEID는 첨부하도록 하겠다.
올리디버거로 해당 파일을 올려보도록 하겠다.
위와 같은 에러가 뜨고, 로딩이 되는 것을 볼 수 있다. 해당 오류에 대해서 아래 링크에서 설명하도록 하겠다.
https://hackchang.tistory.com/63
올리디버거에서 스트링 검색을 해도 내용을 찾을 수 없어 IDA로 열어보도록 하겠다.
IDA를 통해 해당 프로그램을 열고, Shift + F12 를 누르면 스트링을 검색해준다.
Key값이 출력되는 부분을 찾을 수 있었고, 해당 부분으로 들어가보도록 하겠다.
해당 부분에 X를 눌러 참조되는 부분을 들어가보도록 하겠다.
여기서 헥스레이(HexRay)의 도움을 받아 소스코드를 보도록 하겠다. (F5)
위의 소스를 통해 XOR연산(^)을 하는 것을 알 수 있고,
여기서 우리는 a1의 값을 알 수 없기 때문에 이제 올리디버거의 힘을 빌리도록 하겠다.
올리디버거를 통해 EP를 찾았다. 찾는 과정은 생략하도록 하겠다.
조금 내리다보면 위와 같은 ESP에 4를 더하는 부분을 찾을 수 있다.
아래 더하는 부분도 반복문의 내용과 비슷하기 떄문에 위의 malloc함수에 BP를 걸어보겠다.
BP를 걸고 한줄씩 실행하다가 DS 에 C라는 문자열이 담긴 것을 볼 수 있었고, 아래 덤프창에 00bc1365주소로 가보도록 하겠다.
이렇게 log파일에 담긴 내용을 찾을 수 있었고,
다시 파일을 불러와서 봤는데
malloc - free 후 EDX주소에 가면 위와같이 이름이 나오는 것을 볼 수 있었다.
EDX주소 +4를하면
이렇게 이름이 나오는 걸로 봐서
a1+4 = 이름이라는 것을 알았고,
28 , 29를 구해보도록 하겠다.
여기서 28을 더하면 안되고, 16진수로 바꾼 후 더해줘야한다.
28 = 1C , 29 = 1D
M과 A는 우리가 처음 ADD할 때 입력한 성별과 타입이라는 것도 알게 되었다.
a1+28 = 성별 , a1+29 = 타입
다시 위의 헥스레이(hexray) 소스에서 a1+4 (이름) == 'E' 이므로,
이름이 E라는 조건에 만족해야한다.
우리는 이름만 알고, 성별과 타입은 알 수 없었다.
힌트와 문제 설명을 다시보도록 하겠다.
Description
B never good at studying doesn't
But, she has a lot of interest in the computer.
So, she likes computer.
Hint1. key is the ASCII code area.
B는 공부를 잘하지 않는다.
그러나 그녀는 컴퓨터에 많은 흥미를 가지고 있다.
그래서 그녀는 컴퓨터를 좋아한다.
힌트1 , 키는 아스키코드 영역이다.
여기서 B라해서 이름이 B라고 생각할 수 있지만,
우리는 이름은 E인 것을 알았고,
여기서 그녀라고 했기 때문에 성별에는 M이 아닌 W가 와야된다는 것을 알았다.
그러면 남은 것은 타입인데, 여기서 B가 이름이 아닌 타입이라 생각됐고, 타입에 B가 오면된다.
'W4RG4M3 > R3V3RS1NG' 카테고리의 다른 글
[Suninatas] 써니나타스 10번 문제 풀이 (1) | 2020.07.29 |
---|---|
[Suninatas] 써니나타스 9번 문제 풀이 (0) | 2020.07.29 |
[xcz.kr] Prob9 9번 문제 풀이 (0) | 2020.07.17 |
[Cheat Engine Tutorial Game] 치트엔진 튜토리얼 게임 3번 문제 풀이 (0) | 2020.07.09 |
[Cheat Engine Tutorial Game] 치트엔진 튜토리얼 게임 2번 문제 풀이 (0) | 2020.07.09 |