반응형
Key 값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가
힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고..
정답인증은 Name의 MD5 해쉬값(대문자)
라고한다.
프로그램 실행화면
힌트로 Name은 한자리 라는걸 알게됐다.
우선 IDA로 보자
한자리를 넣으면 비교해서 3보다 작으면 Please Enter More Chars... 를 띄운다.
cmp eax, 3 을 cmp eax, 1로 바꿔주면 더이상 이쪽으로 분기되지 않는다.
x32Dbg로 보자
cmp eax, 1로 패치해주었다.
브레이크포인트를 걸고 진행해보자
call 45b850을 지나고나면 Key가 스택에 들어가는 모습을 볼 수 있다.
그렇기에 call 45b850 에서 안으로 따라 들어가보자
타고들어가면..
add esi, edx 부터 key를 생성하는 곳으로 보인다.
#include <stdio.h>
int main()
{
int esi = 0;
int edx = 0;
for (auto i = 0x30; i <= 0x7A; i++)
{
esi = i * 0x772;
edx = esi;
edx *= esi;
esi += edx;
esi *= 0x474;
esi += esi;
edx = esi;
printf("%c :: %X\n", i, edx);
}
}
어셈블리어에 맞게 코딩을 하고 실행시켜 보면
F 문자가 BEDA 라는걸 알 수 있다.
끝
사실 한 자리라는 힌트를 얻었기에 0부터 z까지 하나하나 넣어봐도 알 수 있다.
반응형
'Reverse Engineering > [CodeEngn] Basic RCE' 카테고리의 다른 글
[Reversing] CodeEngn - Basic RCE L19 (0) | 2024.07.03 |
---|---|
[Reversing] CodeEngn - Basic RCE L18 (0) | 2024.07.03 |
[Reversing] CodeEngn - Basic RCE L16 (0) | 2024.07.02 |
[Reversing] CodeEngn - Basic RCE L15 (0) | 2024.07.02 |
[Reversing] CodeEngn - Basic RCE L14 (0) | 2024.07.02 |