일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 워게임
- 웹
- 해킹
- ftz
- hacking
- dreamhack
- network
- TCP
- Web
- 시스템
- System
- 모의해킹
- 드림핵
- 소프트웨어
- XSS
- 소프트웨어보안
- 리버싱
- CodeEngn
- webhacking
- 웹해킹
- 순서도
- 네트워크
- Webhaking
- WarGame
- 네트워크보안
- reversing
- bee-box
- 비박스
- 시스템해킹
- 알고리즘
- Today
- Total
Without a Break
[CodeEngn] Basic RCE L17 본문
MD5 :128비트 암호화 해시 함수
실행 파일을 디버거로 열어 프로그램을 실행하면 위와 같이 Name과 Key를 입력할 수 있는 창이 뜬다.
Name을 찾아보자.
text strings를 살펴보니 성공했을 때 문자열을 발견할 수 있었다
성공 문자열이 있는 위치로 이동한 후, 성공 문자열이 있는 윗부분에서 문자열 길이를 비교하는 곳을 찾을 수 있었다.
Name은 한글자라고 했으므로 EAX와 비교하는 문자열 길이를 1로 고쳐준다.
성공 문자열에서 밑으로 내리다보니 Key 값을 생성하는 첫번째 루틴을 찾을 수 있었다.
입력한 Name 값으로 Key값의 앞자리 4자리를 생성하는 것을 알 수 있음
성공 문자열 위쪽에 점프하는 부분 앞에 BP를 걸어준다.
F8로 프로그램을 실행해서 Name을 임의로 입력해줬다. (A)
Key 값은 문제에서 나와있었던 값을 입력함
Name과 Key를 입력하고 Check it을 누르면 위와 같이 BP를 건 곳으로 이동한다.
내가 입력한 Name인 A는 올바른 Name의 키 값과 다름을 알 수 있었음
-> 내가 입력한 Name으로 생성한 키 값 : FFE3 ~
-> 문제에서 원하는 Name으로 생성한 키 값 : BEDA ~
Name을 찾기 위해 아까 찾았던 Key 생성 루틴에 맞춰서 코드를 짜줬다. (Key 생성 루틴 그대로 코드 짜면 됨)
앞 4글자가 BEDA인 한글자를 찾으면 됨
코드를 실행해보니 답은 F였다.
입력해보니 정답임
정답은 Name의 MD5 해쉬값이므로 F를 MD5로 암호화해주면 된다.
'Reversing > Wargame' 카테고리의 다른 글
[CodeEngn] Basic RCE L19 (0) | 2023.05.23 |
---|---|
[CodeEngn] Basic RCE L18 (0) | 2023.05.18 |
[CodeEngn] Basic RCE L16 (0) | 2023.05.17 |
[CodeEngn] Basic RCE L15 (0) | 2023.05.17 |
[CodeEngn] Basic RCE L14 (1) | 2023.05.11 |