Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- CodeEngn
- format-string-bug
- Beginner
- misc
- Dreamhack
- pwnable
- rop
- 메모리 구조
- rev-basic-1
- 세명컴퓨터고등학교
- hacking
- 코드업
- 기초 100문제
- rev-basic-0
- yawa
- downunder
- wargame
- easycrack
- rev
- Reverse Engineering
- system hacking
- downunderctf
- pwnable.tw
- reversing.kr
- tjdmin1
- foobar ctf
- RAM 구조
- 247ctf
- simple-operation
- easy aseembly
Archives
- Today
- Total
Tjdmin1
[reversing.kr] Easy Crack 본문
http://reversing.kr/challenge.php
Reversing.Kr
Copyright © 2012-2025 KiwanKo All Right Reserved.
reversing.kr
Analyze
WinMain 함수
DialogBoxParamA로 대화 상자를 하나 만듭니다.
이때 핸들러는 DialogFunc으로 이벤트들을 저 함수에서 처리하게 됩니다.
DialogFunc 함수
이벤트 처리 로직이 보이고 a3의 값이 1001일 때 sub_401080을 호출하게 됩니다.
sub_401080 함수
여기서 입력 값을 처리하는 것을 알 수 있게 됩니다.
if ( String[1] != 97 || strncmp(&String[2], Str2, 2u) || strcmp(&String[4], aR3versing) || String[0] != 69 )
return MessageBoxA(hDlg, aIncorrectPassw, Caption, 0x10u);
이 조건문 내부로 들어가게 되면 aIncorrectPassw가 뜨게 되는 것으로 보아 내부로 들어가면 안되는 것을 알 수 있습니다.
그럼 if 내의 조건은 무조건 false가 되어야 하고 하나하나씩 분석해보면 아래와 같습니다.
String[1] = 97 ( a )
String[2:4] = Str2 ( 5y )
String[4:] = aR3versing ( R3versing )
string[0] = 69 ( E )
strncmp는 src값과 dest의 값을 n의 길이 만큼 비교해서 똑같으면 0을 다르면 1을 반환하게 되어 조건문이 false가 될 수 있는 것입니다.
따라서 패스워드의 값은 Ea5yR3versing이 되게 됩니다.
'Reverse engineering' 카테고리의 다른 글
[CodeEngn] RCE Basic L01 (0) | 2025.03.11 |
---|---|
[Dreamhack] simple-operation (1) | 2024.07.03 |
[Dreamhack] rev-basic-1 (1) | 2024.07.03 |
[Dreamhack] rev-basic-0 (0) | 2024.07.03 |
[Dreamhack] Easy Assembly (0) | 2024.07.03 |