문제 파일을 다운 받고 zip 파일의 압축을 풀어주니 06.exe 라는 실행파일이 하나 있었다. 일단 힌트에서 패킹여부를 확인해주는 프로그램을 사용하라고 해서 exeinfo에 06.exe 파일을 넣어보았다.
UPX packer 라는 문자열이 보이므로 upx.exe 를 설치했다. 그 후 cmd 창에서 upx.exe 의 경로로 들어가준 후에 upx -d 06.exe 로 언패킹
언패킹된 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 |