목록War Game/CodeEngn (25)
tmxklab
1. 문제 군생활...ㅋㅋㅋㅋㅋ 1) 문제확인 확인 버튼을 누르거나 창을 닫으려고 하면 계속 메시지 박스 안에 있는 숫자가 1부터 시작해서 1씩 올라가게 된다. 2. 접근방법 UPX로 패킹되어 있으며 Autoit스크립트로 만들어져 있다. 언패킹 3. 문제풀이 1부터 790까지 반복됨으로 790의 MD5 해쉬 값을 구해서 제출하면 된다.
1. 문제 1) 문제확인 1234를 입력하고 "OK"버튼을 누르면 오른쪽 그림과 같이 나오게 된다. 2. 접근방법 VB로 만들어진 파일 3. 문제풀이 눈에 띄는 문자열은 존재하지 않지만 문자열을 비교하는데 사용되는 함수 발견 sub_401D8C()에서 __vbaStrCmp()가 사용된다. 입력 값을 "test"로 주었을 때 __vbaStrCmp()의 인자로 입력한 값과 "677345"가 들어간다. 이후에 이를 통해 분기하므로 다시 "677345"를 입력하고 확인해보자 "677345"를 입력하고 분기하게 되면 위 그림과 같이 나오게 된다. 따라서 Serial값은 "677345"
1. 문제 1) 문제확인 2. 접근방법 패킹 x 3. 문제풀이 패킹되지 않았는데 보이는 함수라고는 sub_4011AE()밖에 존재하지 않는다. 디버깅해보면서 확인해보자 쭉 따라가다보면 0x401006부터 Dialog관련 함수들이 보인다. 이를 통해 0x401006이 OEP인 것을 확인할 수 있다. x32dbg에서 제공해주는 scylla플러그인을 사용해서 덤프해주자 아이다에서 덤프파일을 확인해보면 제대로 함수들이 나오는 것을 확인할 수 있으며 성공관련 문자열을 참조하는 함수를 따라가보면 위 그림과 같이 sub_401114()에서 참조하는 것을 알 수 있다. 이제 저 함수를 중점적으로 디버깅해보자 Name에는 "CodeEngn"을 Serial에는 "1234"로 입력하였다. 위 그림을 확인해보면 입력한 Ser..
1. 문제 1) 문제확인 Name에 "CodeEngn"을 입력하고 아무 Serial값을 쓰니 오른쪽 메시지 박스 창이 뜨게 된다. 2. 접근방법 패킹은 되어있지 않으므로 바로 분석해보자 3. 문제풀이 성공을 뜻하는 문자열 확인, 해당 문자열을 포함하는 변수를 통해 참조하는 함수를 따라가보자 최종적으로 sub_401392()에서 성공을 뜻하는 문자열을 출력하는 메시지 박스를 띄우지만 sub_401392()를 호출하는 부분은 없고 위 그림과 같이 DialogFunc()에서 해당 함수의 주소를 push하는 부분밖에 없다. 따라서, 아까 실패했을 때 출력되는 문자열을 참조하는 함수를 따라가보자, 왜냐하면 Name값과 Serial값을 비교하여 성공 또는 실패하는 로직이 있을 것이라고 추정되기 때문이다. 실패를 뜻..
1. 문제 1) 문제확인 일정 시간이 흐르면 알아서 창이 종료된다. 2. 접근방법 Autoit스크립트로 만들어졌으며 UPX로 패킹된 것을 알 수 있다. 3. 문제풀이 Autoit Decompiler인 Exe2Aut 프로그램을 이용하여 분석 13.179초에 종료되는 것을 확인 문제에서는 몇 밀리세컨드에 종료되는지 MD5로 해쉬 값을 구하여 제출하라고 하였으니 13179의 MD5해쉬 값을 구하여 제출하면 된다.
1. 문제 1) 문제확인 아무것도 안뜬다. 위에 문제에서는 특정 문자열이 출력되기 위해 어떠한 데이터가 필요하다고 한다. 2. 접근방법 "Cracked by"문자열 참조하는 로직 찾기 sub_401362() 호출하는 로직 찾기 start()에서 eax값 1이면 우리가 원하는 메시지를 호출할 수 있다. 이제, 디버깅을 통해서 저 곳까지 어떻게 도달해야 하는지 알아보자 3. 문제풀이 CreateFileA()을 통해 "CRACKME3.KEY"파일을 open하는 것 같다. 여기서는 파일이 존재하지 않아 리턴 값으로 -1을 뱉었다 퉤 CreateFileA()를 통해 "CRACKME3.KEY"파일을 open하여 0x12(18)byte만큼 데이터를 읽어 input_val변수에 저장한다. 문제는 if문이 참이되어 su..
1. 문제 1) 문제확인실행시키면 위와 같이 창이 뜨고 일정 시간이 지난 후에 알아서 꺼진다. 2. 접근방법Autoit 스크립트로 만들어졌으며 UPX패킹된 것을 알 수 있다. 3. 문제풀이 Autoit Decompiler Download)About Exe2Aut.Download File ==> Exe2Aut v0.10.0.0 (2014-01-09).7z 첨부한 파일은 2014년 버전이라서 최신 버전은 아니지만, 특별히 기능에서 부족한 것이 없기에 이것만 써도 무방. 첨부한 파일 다운 받아서 압축 풀고 사용하면 된다. 따로 설치하는데 어려움은 없다. Exe2Aut은 autoit3 decompiler이고 사용법은 열어보고 싶은 파일을 드래그하면 된다. 즉 Exe2aut.exe를 실행시키고, autoit으로 ..
1. 문제 1) 문제확인 2. 접근방법String1과 2를 비교하고 분기한다. 3. 문제풀이Serial 값에 입력 값"1234"로 주었을 때 "06162370056B6AC0"와 비교한다. 4. 몰랐던 개념 Uploaded by Notion2Tistory v1.1.0
1. 문제 1) 문제확인 2. 접근방법 3. 문제풀이문제에서 Name이 한 자리라고 알려줬으니 "A"를 입력하고 Check it!버튼을 눌러보자 그런데 이상하게도 입력한 값("A")의 길이와 3을 비교하여 작으면 우리가 원하는 곳으로 분기하지 않는다. 이거는 EIP값을 변경하여 위 사진이 나오도록 실행하였는데 여기서도 입력한 값의 길이와 0x1E(30)과 비교한다. 처음에 한 자리수가 아닐거라 생각하고 입력 값의 길이를 3보다 크고 30보다 작은 문자열을 여러 개 만들어 브포 때리려고 했는데 뭔가 이상했다. 문제에서는 분명히 한 자리수라고 했는데... 그래서 브포 때리기에는 시간 낭비될 것같아서 롸업을 봤는데 처음 입력한 값의 길이와 3을 비교할 때 코드 패치하여 이상한데로 분기되지 않도록 하였다.(cm..