no image
Basic RCE L19
문제를 보니 프로그램이 종료되는데 걸리는 시간을 찾으라고합니다 :D PUSHAD가 시작되는건 패킹이 되어 있다는 소리이니 편의상 언패킹 후 진행 하겠습니다! 프로그램을 실행시키면 이런 메시지 박스가 뜹니다...! 그래서 뭔가 이상해서 함수가 터지는 곳을 들어가 보았습니다 :D 들어가니 IsDebuggerPresent 함수가 보입니다! IsDebuggerPresent 함수는 디버깅을 탐지하는 함수로써 디버깅중이면 EAX값을 1로 반환합니다 ㅎㅎㅎ 저는 디버깅하여 분석을 해야하니 여러방법이 있지만 그 중 가장 간단한 방법인 EAX를 0으로 변환시켜 계속 분석을 진행했습니다 :D 그러자 다른 메시지박스가 나오는군요 :D 여기서 계속 갈피를 못잡고 있다가 시간을 찾아야하는데 그에 관한 함수인 timeGetTim..
2020.04.07
no image
Basic RCE L18
앞의 여러문제와 동일한 문제군요 :D 한번 풀어보도록 합시다! EP는 콜함수부터 시작을 하는군요? 일단 문자열 검색을 통해서 의심가는 부분을 찾아봅시다! 쉽게 찾을 수 있었습니다! 보니 위의 4011F4 주소의 strcmp를 통해서 문자열을 비교한다음 분기점을 통해서 넘어가는 것을 확인할 수 있습니다. Name = CodeEngn Serial = 12 앞의 문제들과 동일하게 넣어주도록 하겠습니다 :D 보니까 String2에는 새로운 헥스값과 String1에는 제가 넣은 값 12가 들어가더군요 :D 그럼 String2가 CodeEngn의 Serial이겠죠 ㅎㅎㅎ? 실행을 시켰더니 Serial이 맞다고 하네요 ! 이만 문제풀이를 마치도록 하겠습니다 :D
2020.04.02
no image
Basic RCE L17
오늘의 문제는 Key값이 주어지고 Name을 맞추라고 하는군요 ㅎㅎㅎㅎ 힌트는 Name은 1자리이고 알파벳또는 숫자라고 합니다 :D EP 입니다 ㅎㅎㅎ 별다른거 없어보이니 바로 문자열 검색하였습니다 :D 분기점을 찾을 수 있었습니다! 그리고 프로그램을 실행해 보겠습니다 :D 일단 1자리이고 알파벳 또는 숫자라고 했으니 임의의 문자 a를 넣어주겠습니다 ㅎㅎㅎ! 입력을하니.. 문자를 더 입력하라고 하네요..? 정답은 한자리라면서...=_=... 그래서 저 문자열을 찾아가 보았습니다 :D 글자 수를 체크하는 곳이 보입니다! 브레이크를 걸고 실행해서 보니 EAX에 1이 담깁니다! 글자수가 들어가는 것 같아보이는군요..! 그래서 문제가 오류인가 생각을 해봤는데.. 이것도 문제이겠거니 해서 변경해주었습니다! 3을 ..
2020.04.01
no image
Basic RCE L16
문제를 접해보니 L14, L15문제와 동일합니다 :D 분석을 시작해봅시다! EP입니다 ! 바로 문자열 검색을 하여 의심스러운 곳을 찾아보도록 하겠습니다 :D "Good Job!"이라는 문자열을 보고 분기점을 찾았습니다! 40159C에서 EAX 레지스터 값과 [EBP-3C]에 담겨져있는 값을 비교하는 군요 :D 일단 프로그램을 실행시켜보겠습니다! 이전 L14, L15에서 했던것 처럼 Name => "CodeEngn" Password => 12 를 입력하겠습니다 :D 예상대로 분기점에서 걸립니다! 레지스터 EAX에는 C가 담겨져 있고 스택 [EBP-3C]에는 E4C60D97의 값이 담겨져 있네요 :D 나와있지만 스택에 가서 한번 확인해봅시다! EBP 기준이기 때문에 [Relative to EBP]로 보겠습니..
2020.03.31
no image
Basic RCE L15
문제를 보니 앞의 L14 문제와 동일하네요 :D Ollydbg로 열어보니 특별히 다른 건 없어 보입니다! 그래서 문자열 검색 기능을 이용해 의심가는 부분을 찾아보았습니다 :D "Cracked"과 "Try Again!"이 보입니다! 주소 458831의 비교문으로 주소 458837의 점프문으로 인해 분기가 나뉘어집니다 :D 그럼 458831에 BP를 걸어두고 실행을 시켜보았습니다! 프로그램이 하나 실행이 됩니다! Name과 Serial이 존재하는데 문제에서 Name이 "CodeEngn"일 때 Serial이 무엇인지를 알아내라고 했으니 Name에는 "CodeEngn"을 넣고 Serial에는 임의의 숫자를 넣어주도록 하겠습니다 :D 예상대로 BP에서 걸립니다 :D 조건문을 보면 EAX와 DS:[0045B844]..
2020.03.30
no image
Basic RCE L14
문제를 봅시다 :D 뭔지는 모르겠지만 이름이 "CodeEngn"일때 Serial을 구하라고 합니다! 답은 여러개가 될 수 있으며 숫자로 되어 있는 정답을 찾으라고 하네요 ㅇㅅㅇ bruteforce가 필요..=_=? 일단 분석을 시작해 봅시다! 프로그램이 UPX 패킹되어 있더라구요! 편의상 언패킹하고 시작하도록 하겠습니다 :D 언패킹 완료! 이쯤이면 너무 많이해서 이제 자연스럽게 흘러가야겠죠..~_~ EP입니다! 크게 특별한게 눈에 띄지는 않네요! 문자열 검색을 통해서 찾아보았습니다 :D 문자열을 검색해서 찾아보았습니다! 바로 나오더라구용 :D 40133C의 분기를 통해서 성공과 실패 메시지박스가 실행이되는군요..! 실행 시켜볼까용 ! 프로그램에서 두 개의 입력칸과 CHECK, ABOUT 버튼이 있습니다 ..
2020.03.28
no image
Basic RCE L13
문제가 정답을 맞추라는 것 같네요 :D 다운받아 실행해보니 어떤 패스워드를 맞춰야하나 봅니다! 그럼 Ollydbg로 열어보도록 하겠습니다 :D 잉!? 열리지 않네요..!!! 파일 형식을 보도록합시다! C#으로 만들어진 프로그램이었군요.. C#으로 만들어진 파일은 닷넷 프레임워크가 없는 환경에서는 분석할 수 없기 때문이죠 :D 닷넷 프레임워크란 ? (.NET Framework) MS에서 개발한 Window 프로그램 개발 및 실행환경을 의미합니다. C#, C++, F# 등 여러가지 존재하는데 이중에서도 C#이 대표적이라고 할 정도로 닷넷이 없으면 안되는 존재이죠 :D 그럼 닷넷을 분석할수 있는 프로그램인 ".NET reflector"를 사용해 보겠습니다! 다행히 소스코드가 전부 보이는군요 :D 소스코드를 가..
2020.03.22
no image
Basic RCE L12
Key값과 주소영역을 찾으라고 하는군요! 일단 Key 값을 먼저 찾아보도록 합시다 :D 프로그램을 실행 시키니 역시 Key을 입력하라고 하네요! OEP는 패킹이 되어있지 않고 너무 깔끔합니다! 그래서 문자열로 찾아보니 메시지 박스 성공문자와 이상한 긴 문자열이 존재하더군요! 찾아서 가보니 긴 문자열이 암호화되는 것 처럼 마냥 계속해서 반복 루틴을 하게 됩니다! 그러나 아무런 의미는 없었던 것이었죠! CALL 함수를 들어가봅시다! 뭐 그냥.. 음.. Fake 인것 같죠? :D 최종적으로 보면 40107D 함수에 EAX가 7A2896BF가 되어야 성공메세지를 띄울 수 있습니다 :D Key 값으로 100을 입력해줘보았습니다! 그런데 EAX가 64로 들어가는거 보이시나요? 10진수 100이 16진수로 64임을 ..
2020.02.28

Basic RCE L19

HelloMG
|2020. 4. 7. 22:11

Basic RCE L19 문제

문제를 보니 프로그램이 종료되는데 걸리는 시간을 찾으라고합니다 :D

PUSHAD

PUSHAD가 시작되는건 패킹이 되어 있다는 소리이니 편의상 언패킹 후 진행 하겠습니다!

프로그램 실행

프로그램을 실행시키면 이런 메시지 박스가 뜹니다...!

그래서 뭔가 이상해서 함수가 터지는 곳을 들어가 보았습니다 :D

IsDebuggerPresent

들어가니 IsDebuggerPresent 함수가 보입니다!

IsDebuggerPresent 함수는 디버깅을 탐지하는 함수로써 디버깅중이면 EAX값을 1로 반환합니다 ㅎㅎㅎ

저는 디버깅하여 분석을 해야하니 여러방법이 있지만

그 중 가장 간단한 방법인 EAX를 0으로 변환시켜 계속 분석을 진행했습니다 :D

!?

그러자 다른 메시지박스가 나오는군요 :D

 

여기서 계속 갈피를 못잡고 있다가 시간을 찾아야하는데 그에 관한 함수인 timeGetTime 함수가 보였습니다!

그래서 브레이크를 걸고 다시 실행을 해보았습니다 :D

timeGetTime

IsdebuggerPresent함수를 우회한 후 [F9]를 눌렀는데 딱 잡히는 부분이 있었습니다!

디버깅 탐지 우회를 하지 않고 실행했을 땐 잡히지 않았는데 우회하니 보이더라구요!

분기점

timeGetTime함수를 실행시키고 난 후 어떤 한 분기점을 마주칠 수 있었습니다 :D

EAX와 [EBX+4]의 값을 비교하는 것인데

EAX에는 timeGetTime함수로 현재 시스템 시간을 반환하여 담은 값이고 [EBX+4]에는 어떤 시간값이 담겨져있겠죠 :D?

 

그래서 [EBX+4]를 확인해보니 2B70이 담겨져 있는 것을 확인해볼 수 있었습니다!

그래서 이게 혹시 프로그램을 종료시키는 값이지 않을까 생각해서 체크해보니

정답이였던 것을 확인해 볼 수 있었습니다 :D

 

다른 문제에 비해서 갑자기 난이도가 확 올라간 문제가 아닌가 싶네용..!!

좀 엉성하지만 이만 문제풀이를 마치겠습니다 :D

'CTF > CodeEngn.kr' 카테고리의 다른 글

Basic RCE L18  (0) 2020.04.02
Basic RCE L17  (0) 2020.04.01
Basic RCE L16  (0) 2020.03.31
Basic RCE L15  (0) 2020.03.30
Basic RCE L14  (0) 2020.03.28

Basic RCE L18

HelloMG
|2020. 4. 2. 17:58

Basic RCE L18 문제

앞의 여러문제와 동일한 문제군요 :D

한번 풀어보도록 합시다!

EP

EP는 콜함수부터 시작을 하는군요?

 

일단 문자열 검색을 통해서 의심가는 부분을 찾아봅시다!

분기점

쉽게 찾을 수 있었습니다!

보니 위의 4011F4 주소의 strcmp를 통해서 문자열을 비교한다음 분기점을 통해서 넘어가는 것을 확인할 수 있습니다.

프로그램 실행

Name = CodeEngn

Serial = 12

앞의 문제들과 동일하게 넣어주도록 하겠습니다 :D

strcmp

보니까 String2에는 새로운 헥스값과 String1에는 제가 넣은 값 12가 들어가더군요 :D

 

그럼 String2가 CodeEngn의 Serial이겠죠 ㅎㅎㅎ?

시리얼 입력

실행을 시켰더니 Serial이 맞다고 하네요 !

 

이만 문제풀이를 마치도록 하겠습니다 :D

'CTF > CodeEngn.kr' 카테고리의 다른 글

Basic RCE L19  (0) 2020.04.07
Basic RCE L17  (0) 2020.04.01
Basic RCE L16  (0) 2020.03.31
Basic RCE L15  (0) 2020.03.30
Basic RCE L14  (0) 2020.03.28

Basic RCE L17

HelloMG
|2020. 4. 1. 17:25

Basic RCE L17 문제

오늘의 문제는 Key값이 주어지고 Name을 맞추라고 하는군요 ㅎㅎㅎㅎ

힌트는 Name은 1자리이고 알파벳또는 숫자라고 합니다 :D

 

EP

EP 입니다 ㅎㅎㅎ

별다른거 없어보이니 바로 문자열 검색하였습니다 :D

분기점

분기점을 찾을 수 있었습니다!

그리고 프로그램을 실행해 보겠습니다 :D

프로그램 실행

일단 1자리이고 알파벳 또는 숫자라고 했으니

임의의 문자 a를 넣어주겠습니다 ㅎㅎㅎ!

Please Enter More Chars...

입력을하니.. 문자를 더 입력하라고 하네요..?

정답은 한자리라면서...=_=...

그래서 저 문자열을 찾아가 보았습니다 :D

글자 수 제한

글자 수를 체크하는 곳이 보입니다!

글자 수 확인

브레이크를 걸고 실행해서 보니 EAX에 1이 담깁니다!

글자수가 들어가는 것 같아보이는군요..!

그래서 문제가 오류인가 생각을 해봤는데.. 이것도 문제이겠거니 해서 변경해주었습니다!

CMP EAX,1

3을 1로 바꾸어 1글자여도 동작될 수 있도록 해주었습니다!

 

그리고 문자를 통해서 암호화가 되기 때문에 먼저 암호화가 어디서 이루어지는 찾아야합니다 :D

CALL 45B850

45BB9B 주소의 함수을 지나니 EAX에 어떤 키가 담기는 것을 확인했습니다 ㅎㅎㅎ

 

그래서 들어가서 분석을 해보았습니다!

KEY 생성

들어가서 보시다보면 이 위와같은 구조가 4개가 보였습니다!

그리고 이 루틴의 첫 시작이 제가 입력한 e인 것을 보아 KEY 생성하는 구간이구나 생각했습니다 ㅎㅎㅎ

'-'를 기준으로 총 5개가 있는데 위의 루틴은 첫번째 구간이니 'BEDA'를 만들어내는 녀석을 찾으면 될 것 같습니다 :D

루틴 설명

위의 사진과 같이 루틴의 수식을 다 적어 놓은 후..

python

파이썬을 이용해서 간단히 코딩해 보았습니다 :D

 

그리고 실행!!

F

beda가 포함된 녀석을 찾았습니다 :D

바로 "F"군요!!

맞는지 확인해 봐야겠죠 ㅎㅎㅎ?

Well done!

"Well done!"창이 뜨는군요 ㅎㅎㅎㅎ!

정답은 "F"이네용!

이제 MD5로 해쉬화해서 인증하면됩니다!

 

이만 문제풀이를 마치겠습니다 :D

'CTF > CodeEngn.kr' 카테고리의 다른 글

Basic RCE L19  (0) 2020.04.07
Basic RCE L18  (0) 2020.04.02
Basic RCE L16  (0) 2020.03.31
Basic RCE L15  (0) 2020.03.30
Basic RCE L14  (0) 2020.03.28

Basic RCE L16

HelloMG
|2020. 3. 31. 17:29

Basic RCE L16 문제

문제를 접해보니 L14, L15문제와 동일합니다 :D

 

분석을 시작해봅시다!

EP

EP입니다 !

바로 문자열 검색을 하여 의심스러운 곳을 찾아보도록 하겠습니다 :D

분기점

"Good Job!"이라는 문자열을 보고 분기점을 찾았습니다!

40159C에서 EAX 레지스터 값과 [EBP-3C]에 담겨져있는 값을 비교하는 군요 :D

 

일단 프로그램을 실행시켜보겠습니다!

프로그램 실행

이전 L14, L15에서 했던것 처럼

Name => "CodeEngn"

Password => 12

를 입력하겠습니다 :D

분기점

예상대로 분기점에서 걸립니다!

 

레지스터 EAX에는 C가 담겨져 있고

스택 [EBP-3C]에는 E4C60D97의 값이 담겨져 있네요 :D

 

나와있지만 스택에 가서 한번 확인해봅시다!

Relative to EBP

EBP 기준이기 때문에 [Relative to EBP]로 보겠습니다 :D

EBP-3C

예상대로 [EBP-3C]에는 E4C60D97이 담겨져 있네요 :D

 

Password로 12를 넣었는데 EAX에 C가 담긴다는 것은 16진수로 변환되어서 들어가는 것이니

정답은 E4C60D97을 10진수로 변환한 값이겠네용 :D

3838184855

계산기를 이용해서 10진수로 변환한 값을 가져옵니다!

성공!!

패스워드에 넣으니 "Good Job!"이 출력되네용 :D

 

L14, L15와 문제풀이 방식이 거의 동일한 문제네요!

이만 문제풀이를 마치겠습니다 :D

'CTF > CodeEngn.kr' 카테고리의 다른 글

Basic RCE L18  (0) 2020.04.02
Basic RCE L17  (0) 2020.04.01
Basic RCE L15  (0) 2020.03.30
Basic RCE L14  (0) 2020.03.28
Basic RCE L13  (0) 2020.03.22

Basic RCE L15

HelloMG
|2020. 3. 30. 21:47

 

L15 문제

문제를 보니 앞의 L14 문제와 동일하네요 :D

EP

Ollydbg로 열어보니 특별히 다른 건 없어 보입니다!

 

그래서 문자열 검색 기능을 이용해 의심가는 부분을 찾아보았습니다 :D

분기점

"Cracked"과 "Try Again!"이 보입니다!

주소 458831의 비교문으로 주소 458837의 점프문으로 인해 분기가 나뉘어집니다 :D

 

그럼 458831에 BP를 걸어두고 실행을 시켜보았습니다!

프로그램

프로그램이 하나 실행이 됩니다!

 

Name과 Serial이 존재하는데 문제에서 Name이 "CodeEngn"일 때

Serial이 무엇인지를 알아내라고 했으니

Name에는 "CodeEngn"을 넣고

Serial에는 임의의 숫자를 넣어주도록 하겠습니다 :D

조건

예상대로 BP에서 걸립니다 :D

 

조건문을 보면 EAX와 DS:[0045B844]와 비교를 하고 있습니다!

밑에서 보니 친절하게 DS:[0045B844]는 6160이라는 것을 보여주고 있네요 :D

 

그래도 한번 확인해보도록 합시다!

45B844

역시 메모리주소 45B844에 6160의 값이 들어있습니다 :D

메모리 상에는 리틀엔디언 방식으로 들어가기 때문에 거꾸로 읽으셔야합니다 ㅎㅎㅎ

C

그럼 EAX의 정체는 무엇일까요 ?

 

제가 12를 입력했는데 EAX에는 C로 담겼습니다 ㅎㅎㅎ

즉, 제가 입력한 Serial값이 16진수로 변환된다는 것을 알 수 있겠죠!

 

그럼 답을 알 수 있겠죠 :D

24,928

6160을 10진수로 바꾸면 24928이 됩니다!

hack!!

이제 Serial에 넣어주도록 합시다!

crack!!!

역시나 예상대로 16진수로 변환되어 6160으로 들어갑니다 :D

성공!

계속해서 실행하니 크랙이 되었다고 하네용 :D

 

앞의 문제와 동일한 방식으로 풀면되는 문제네요!

그럼 이만 문제풀이를 마치겠습니다 :D

'CTF > CodeEngn.kr' 카테고리의 다른 글

Basic RCE L17  (0) 2020.04.01
Basic RCE L16  (0) 2020.03.31
Basic RCE L14  (0) 2020.03.28
Basic RCE L13  (0) 2020.03.22
Basic RCE L12  (0) 2020.02.28

Basic RCE L14

HelloMG
|2020. 3. 28. 23:17

Basic RCE L14 문제

문제를 봅시다 :D

뭔지는 모르겠지만 이름이 "CodeEngn"일때 Serial을 구하라고 합니다!

답은 여러개가 될 수 있으며 숫자로 되어 있는 정답을 찾으라고 하네요 ㅇㅅㅇ

bruteforce가 필요..=_=?

일단 분석을 시작해 봅시다!

UPX 패킹

프로그램이 UPX 패킹되어 있더라구요!

편의상 언패킹하고 시작하도록 하겠습니다 :D

UPX 언패킹

언패킹 완료!

이쯤이면 너무 많이해서 이제 자연스럽게 흘러가야겠죠..~_~

EP

EP입니다!

크게 특별한게 눈에 띄지는 않네요!

 

문자열 검색을 통해서 찾아보았습니다 :D

분기점

문자열을 검색해서 찾아보았습니다!

바로 나오더라구용 :D

 

40133C의 분기를 통해서 성공과 실패 메시지박스가 실행이되는군요..!

실행 시켜볼까용 !

프로그램 실행

프로그램에서 두 개의 입력칸과 CHECK, ABOUT 버튼이 있습니다 :D

그래서 저는 직감적으로 위의 칸이 Name, 아래의 칸이 Serial이라고 생각하고 입력했습니다 :D

 

Name -> CodeEngn

Serial -> 123

검색

40132F주소에서 Serial인 "123"이 들어가고

401334주소에서 CALL함수가 실행되니 반환값(EAX)으로 "7B"를 내뱉는군요!

 

그리고 ESI와 비교를하는데 ESI는 "129A1"을 가지고 있습니다 :D

느낌이 오시나용 ㅇㅅㅇ?

7B

7B는 바로 10진수 123의 16진수 값입니다!

 

그럼 "129A1"의 값을 EAX에 저장시켜야 조건문이 일치하니까

Serial값은 당연히 16진수 129A1의 10진수 값이 되겠네요 :D

129A1

이렇게 계산기를 통해서 "76193"이란 값을 알아냅니다!

76193 체크!

그리고 예상대로 EAX와 ESI 레지스터가 같은 값을 가지게 되는군요 :D

Good Job, I Wish You the Very Best

기분 좋은 칭찬의 메시지 박스를 띄웠습니다 ~_~

 

BruteForce가 필요하다고 했는데.. 왜 필요한지는 잘 모르겠네요..!

 

이렇게 문제풀이를 마치도록 하겠습니다 :D

'CTF > CodeEngn.kr' 카테고리의 다른 글

Basic RCE L16  (0) 2020.03.31
Basic RCE L15  (0) 2020.03.30
Basic RCE L13  (0) 2020.03.22
Basic RCE L12  (0) 2020.02.28
Basic RCE L11  (0) 2020.02.24

Basic RCE L13

HelloMG
|2020. 3. 22. 16:26

Basic RCE L13

문제가 정답을 맞추라는 것 같네요 :D

실행화면

다운받아 실행해보니 어떤 패스워드를 맞춰야하나 봅니다!

 

그럼 Ollydbg로 열어보도록 하겠습니다 :D

Error

잉!? 열리지 않네요..!!!

 

파일 형식을 보도록합시다!

C#

C#으로 만들어진 프로그램이었군요..

C#으로 만들어진 파일은 닷넷 프레임워크가 없는 환경에서는 분석할 수 없기 때문이죠 :D

 


닷넷 프레임워크란 ?

(.NET Framework)

 

MS에서 개발한 Window 프로그램 개발 및 실행환경을 의미합니다.

C#, C++, F# 등 여러가지 존재하는데

이중에서도 C#이 대표적이라고 할 정도로 닷넷이 없으면 안되는 존재이죠 :D


 

그럼 닷넷을 분석할수 있는 프로그램인 ".NET reflector"를 사용해 보겠습니다!

.NET reflector

다행히 소스코드가 전부 보이는군요 :D

 

소스코드를 가져옵시다!

Export Source Code

소스코드를 가져오기 위해 오른쪽 클릭 후 [Export Source Code] 기능을 사용하여 추출해 냅니다 :D

Visual Studio

비쥬얼을 이용해서 열고 이제 어떻게 하느냐?!

 

간단하게 생각하면 정답이 들어가는 변수를 출력해주면 간단히 풀리겠죠 :D

직접해보시는기 바랍니다 !!

 

그럼 이만 13번문제 풀이를 마치도록 하겠습니다 :D

'CTF > CodeEngn.kr' 카테고리의 다른 글

Basic RCE L15  (0) 2020.03.30
Basic RCE L14  (0) 2020.03.28
Basic RCE L12  (0) 2020.02.28
Basic RCE L11  (0) 2020.02.24
Basic RCE L10  (0) 2020.02.23

Basic RCE L12

HelloMG
|2020. 2. 28. 18:53

Basic RCE L12

Key값과 주소영역을 찾으라고 하는군요!

 

일단 Key 값을 먼저 찾아보도록 합시다 :D

프로그램 실행

프로그램을 실행 시키니 역시 Key을 입력하라고 하네요! 

OEP

OEP는 패킹이 되어있지 않고 너무 깔끔합니다!

 

그래서 문자열로 찾아보니 메시지 박스 성공문자와 이상한 긴 문자열이 존재하더군요!

루틴

찾아서 가보니 긴 문자열이 암호화되는 것 처럼 마냥 계속해서 반복 루틴을 하게 됩니다!

그러나 아무런 의미는 없었던 것이었죠!

 

CALL 함수를 들어가봅시다!

CALL 함수

뭐 그냥.. 음.. Fake 인것 같죠? :D

 

최종적으로 보면 40107D 함수에 EAX가 7A2896BF가 되어야 성공메세지를 띄울 수 있습니다 :D

Key 값으로 100을 입력해줘보았습니다!

Key 100

그런데 EAX가 64로 들어가는거 보이시나요?

10진수 100이 16진수로 64임을 눈치 채셔야 합니다 :D

 

그럼 답이나왔죠!

바로 계산기를 띄워봅시다 :D

계산기

EAX가 7A2896BF되어야 하니

7A2896BF값을 반대로 10진수로 변환해서 넣으면 되지 않을까요 :D !?

Key 2049480383

역시나 예상대로 맞았군요 :D

성공메시지 박스가 띄워졌으니 Key 값은 2049480383이네요!

 

그럼 이제 Key값을 메시지 박스에 띄우기 위해 HxD로 조작을 해줘야합니다!

성공 문자열

성공문자열에 위치를 확인했습니다!

 

Key 값으로 바꿔줘볼까요!

Key값으로 변경

이렇게 변경되었습니다!

그럼 최종적으로 위치는 0D3B ~ 0D45가 되겠군요!

 

여기서 왜 뒤에 00이 포함되나요? 33이 끝이 아닌가요? 할 수도 있습니다!

문자열은 반드시 끝임을 나타내는 00이 붙기 때문에 00까지 새어주셔야 합니다 :D

 

이렇게 문제풀이 마치도록 하겠습니다 !

'CTF > CodeEngn.kr' 카테고리의 다른 글

Basic RCE L14  (0) 2020.03.28
Basic RCE L13  (0) 2020.03.22
Basic RCE L11  (0) 2020.02.24
Basic RCE L10  (0) 2020.02.23
Basic RCE L09  (0) 2020.02.15