본문 바로가기

Security study/CTF

[Reversing]codeengn Basic RCE L15

1) 내가 푼 풀이

일단 실행시키면 밑의 창이 나온다. 밑에 보이는 대로 Name과 Serial을 마음대로 입력해주었다.

입력해준 값

디버거로 연 후 Search for -> All referenced text strings 로 갔더니

 

이런 문자열이 보였다. 마지막 "Try Again !"은 아무거나 입력했을 때 나온 문자열이므로 위의 두 개가 맞게 입력했을 때 나오는 것 같다. 두 번째 "CRACKED"를 눌러서 들어갔더니

이런 코드들이 보였다. 원래 빨간 사각형 부분이 JNZ였는데 JE로 바꿔줬다. 그 이유는 JNZ로 00458854 주소로 점프하면 "Try Again !"이 출력되기 때문이다. 그렇게 했을 때 밑의 창이 나오면서 풀린다. 근데 이렇게 하면 키값을 알아낼 수가 없다.

풀린 모습

cmp 부분의 코드를 잘 살펴보면 주소 45B844 부분에 뭔가 있다는 것을 예측할 수 있었다. 이제 다른 사람들의 풀이를 보고 정석대로 풀어보았다. 

2) 정석 풀이

덤프창에서 Ctrl + G로 cmp 부분의 45B844로 갔더니

이런 문자열이 보였다. 여기서 숫자로 보이는 게 없고 어디서부터 어디까지가 Flag와 관련된 값인지 알 수 없었는데 DWORD가 4byte를 의미한다고 해서 45B844주소 부터 4byte를 리틀앤디언 방식으로 읽어준 것이 키값이다. 00006160이므로 16진수로 6160이 된다. 즉, 이것을 10진수로 바꾸면

 

24928 이다. 이걸 실행파일에 Name : CodeEngn과 함께 넣어봤다. 

잘 풀린 것을 알 수 있다.

Flag : 24928

'Security study > CTF' 카테고리의 다른 글

[Reversing] CodeEngn Basic RCE L07  (0) 2021.02.26
[Reversing] 레지스터  (0) 2021.02.26
[Reversing] codeengn Basic RCE L09  (0) 2021.02.24
[Reversing] codeengn Basic RCE L04  (0) 2021.02.24
[Reversing] 안티 디버깅(Anti-Debugging)  (0) 2021.02.23