문제를 봅시다 :D
뭔지는 모르겠지만 이름이 "CodeEngn"일때 Serial을 구하라고 합니다!
답은 여러개가 될 수 있으며 숫자로 되어 있는 정답을 찾으라고 하네요 ㅇㅅㅇ
bruteforce가 필요..=_=?
일단 분석을 시작해 봅시다!
프로그램이 UPX 패킹되어 있더라구요!
편의상 언패킹하고 시작하도록 하겠습니다 :D
언패킹 완료!
이쯤이면 너무 많이해서 이제 자연스럽게 흘러가야겠죠..~_~
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는 바로 10진수 123의 16진수 값입니다!
그럼 "129A1"의 값을 EAX에 저장시켜야 조건문이 일치하니까
Serial값은 당연히 16진수 129A1의 10진수 값이 되겠네요 :D
이렇게 계산기를 통해서 "76193"이란 값을 알아냅니다!
그리고 예상대로 EAX와 ESI 레지스터가 같은 값을 가지게 되는군요 :D
기분 좋은 칭찬의 메시지 박스를 띄웠습니다 ~_~
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 |