본문 바로가기

Security study/CTF

[Reversing] codeengn Basic RCE L06

문제 파일을 다운 받고  zip 파일의 압축을 풀어주니 06.exe 라는 실행파일이 하나 있었다. 일단 힌트에서 패킹여부를 확인해주는 프로그램을 사용하라고 해서 exeinfo에 06.exe 파일을 넣어보았다.

exeinfo 결과

UPX packer 라는 문자열이 보이므로 upx.exe 를 설치했다. 그 후 cmd 창에서 upx.exe 의 경로로 들어가준 후에 upx -d 06.exe 로 언패킹

cmd창 화면

언패킹된 06.exe 파일을 눌러서 실행시켜 보았더니 창 하나가 나왔다. Check Serial 이라는 버튼이 있는 것으로 보아 시리얼 키를 입력하면 뭔가 될 것 같다. 시리얼 키를 모르기 때문에 아무것도 입력하지 않고 Check Serial 버튼을 눌러보았다. "Wrong serial!!!"이라는 문자열이 출력되는 것을 볼 수 있었다. 

그 후 Immunity Debugger 에 06.exe를 넣고 Search for -> All referenced text strings 했다. 결과는 아래의 화면이다.

빨간펜으로 표시한 사각형 부분에 우리가 알아볼 수 있는 문자열이 보인다. 아까 아무것도 입력하지 않았을 때 "Wrong serial!!!"이라는 문자열이 나왔으므로 입력값이 맞으면 "Good Job!" 또는 "You got it ; )" 의 문자열이 나타날 것을 예측할 수 있다. 또 위에서 보이는 "ERROR" 는 "Wrong serial!!!"이 나올 때 창의 제목이었으므로 "Good Job!"과 "You got it ; )" 둘 중 하나는 창의 제목일 것인데 순서상 "Good Job!"이 창의 제목일 것 같다. "Good Job!" 문자열을 눌러서 해당 위치로 가보았다.

위치로 이동한 후 조금 위로 올려보니 시리얼 키로 의심되는 "AD46DFS547" 이 보인다. 06.exe를 실행시키고 창에 넣어보았다. 위의 화면에서 0040107D 주소를 보면 JNZ 점프하는 명령어가 보인다. 여기서 시리얼 키가 맞는지 검증 후 틀리면 004010A3 주소로 이동해 우리가 아무것도 입력하지 않았을 때 봤던 결과와 동일한 결과가 나오는 체계인 것 같다.

예상대로 시리얼 키가 맞았다. Good Job! 이 창의 제목이었고 "You got it ;)" 문자열도 보인다.

flag의 형식이 OEP + Serial 이었는데 Serial은 AD46DFS547 였고 OEP는 패킹을 풀고 난 후의 시작주소라고 해서 디버거에 넣었을 때 처음 실행이 시작되는 부분의 주소인 00401360 이 OEP 주소인 것 같다. 

flag : 00401360AD46DFS547

Auth에 넣었더니 풀렸다.

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

[Reversing] 안티 디버깅(Anti-Debugging)  (0) 2021.02.23
[Reversing] codeengn Basic L02  (0) 2021.02.23
[Reversing]패킹(packing), 언패킹(unpacking)  (0) 2021.02.20
[Reversing]abex's crackme #2  (0) 2021.02.18
[Reversing] xcz.kr Prob9  (0) 2021.02.18