일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- hacking
- 소프트웨어보안
- TCP
- XSS
- 시스템해킹
- reversing
- System
- 워게임
- 모의해킹
- 알고리즘
- Web
- bee-box
- 비박스
- dreamhack
- webhacking
- ftz
- 순서도
- 소프트웨어
- 리버싱
- 웹해킹
- 네트워크
- WarGame
- network
- 드림핵
- 네트워크보안
- CodeEngn
- 시스템
- Webhaking
- 해킹
- 웹
- Today
- Total
목록reversing (10)
Without a Break
보호되어 있는 글입니다.

문제 파일을 디버거로 열었을 때의 모습 먼저 corret를 출력하는 입력값을 찾기 위해 corret 문자를 찾아준다. 해당 위치로 이동하면 test eax,eax에서 입력값과 정답을 비교하는 것을 알 수 있다. 따라서 그 위의 코드에 있는 7FF6042D1186에 정답이 있을 것 같으니 살펴보자 7FF6042D1186로 이동하니 20개의 문자열과 사용자의 입력값을 비교한다는 것을 알 수 있었다. 비교한 후, 7FF6042D3000의 주소 값을 호출하는 것을 보아 해당 위치에 플래그가 있을 것 같다. 해당 위치의 HEX DUMP를 살펴보니 20개의 문자열이 있었다. 이제 이걸 플래그로 변환해보자 코드를 작성하고 실행해주면 플래그를 발견할 수 있다.

문제 파일을 디버거로 실행하면 위와 같이 뜬다. "correct"가 출력되는 입력값을 찾아야하니 문자열로 가보자 correct가 있는 위치로 이동하면 위와 같은 위치로 이동한다. 어셈블리 코드를 확인해보면 test eax,eax에서 입력값과 정답을 비교하는 것을 확인할 수 있었다. 그 위의 7FF799851000의 위치에 플래그가 있는 것 같으니 이동해보자 rcx(input값)와 7FF799853000의 값을 한 글자씩 18번 비교한다. 7FF799853000의 위치에 정답이 있는 것 같음 7FF799853000의 HEX DUMP는 위와 같다. 24개의 문자열이 있고, 이 문자들로 xor 연산을 통해 입력값과 비교한다. 따라서 HEX 값을 문자열로 변환시키기 위해서는 역연산을 해야한다. 1. (input..

실행 파일을 디버거로 열어준다 correct를 출력하는 입력값을 찾아야하니 문자열로 가보자 이동해보니 correct를 발견할 수 있었다. 해당 위치로 이동해보자 이동해보니 test eax,eax로 input 값과 정답을 비교하고 correct를 출력한다. 비교 후 correct를 출력하기 전에 출력하는 7FF6D04B1000의 위치로 이동해보자 rcx(input값)와 7FF7D04B3000의 값을 한 글자씩 12번 비교한다. 7FF7D04B3000에 플래그가 있는 것 같으니 해당 위치로 이동해보자 HEX DUMP에 플래그가 있었다

실행 파일을 실행하면 위와 같이 뜬다. 잘못된 비밀번호 입력 시, "Bad Luck! Try again!" 문구가 뜨게 된다. 디버거로 실행 파일이 열리지 않아 peid로 패킹되었는지 확인해봤다. 13.exe 파일은 .NET으로 패킹되어 있었다. .NET으로 패킹된 파일을 열어보기 위해 dotpeek을 설치해줬다. https://www.jetbrains.com/decompiler/ dotPeek: Free .NET Decompiler & Assembly Browser by JetBrains dotPeek is a free tool based on ReSharper. It can reliably decompile any .NET assembly into C# or IL code. www.jetbrains...

OEP는 Original Entry Point로, 패킹된 실제 파일의 시작 부분이다. 실행 파일을 upx -d 06.exe 명령으로 언패킹 해준다. 디버거로 실행 파일을 열면 OEP가 00401360이라는 것을 알 수 있다. 파일을 실행하면 위와 같이 시리얼 넘버를 입력하는 창이 뜨고, 오답 입력 시 "Wrong serial!!!"이라는 팝업이 뜨는 것을 알 수 있다. 문자열만 볼 수 있는 곳을 가면, Good Job!위에 시리얼 넘버를 찾을 수 있다. 코드엔진으로 돌아와 OEP+Serial 넘버를 입력하면 성공이다.

peid로 05.exe 파일을 살펴보면 패킹되어 있는 것을 알 수 있다. 문제 파일을 upx가 있는 위치로 옮긴 후, upx -d 파일명.확장자로 언패킹 해준다. peid로 다시 확인하면 패킹이 잘 된 것을 확인할 수 있다. 디버거로 실행 파일을 열어주고, F9로 파일을 실행하면 위와 같은 화면이 뜬다. Register now ! 를 누르면 다시 시도하라는 팝업창이 뜬다. text string을 확인해보면 "CrackMe cracked successfully"라는 성공 문구 위에 답을 찾을 수 있다.