본문 바로가기

Wargame

(35)
CodeEngn basic 15 15번이다. 실행시키고, CodeEngn 일때의 시리얼 값을 찾으라고 했으니까일단 입력하고 체크해본다. 다시 시도하란다.. 실행해서 천천히 살펴보다보면 스트링부분에 저런 문자열이 있다.아마 어떤 함수에서 이름으로 입력한 것에 대한 시리얼을 만들고,입력한 시리얼을 검사해서 비교하겠지.. 그래서 쭉 실행하다보면 마지막에6160과 457을 비교한다 여기서 457은 내가 입력한 1111이고 6160은 24928이라는데.. 아마 이게 시리얼 값 같아보였다.그래서 입력했다! 정답. 끝.
reversing kr CSHOP CSHOP이다. C#으로 작성되었다, 처음 실행하면 아무것도안나온다. 정말 아무것도.C#이어서 닷넷에 올려서 살펴보고 별 짓을 다해봤는데어떻게해도 찾을 수가 없었다.. 능력부족인가... 근데 엔터 땅 치면 나온다..도대체 뭐지...
reversing kr PE Password 문제를 받아 zip파일을 풀면 이렇게 두 프로그램이 나온다. Original.exe 를 실행시키면위 그림과 같이 메세지박스하나가 뜬다. 그리고 Packed.exe를 실행시키면Password를 체크한다.근데 이 박스안에 들어가는 패스워드를 찾는 문제는 아닌 것 같다. 어쨌든, 메시지박스에서 메시지를 받아오는것이므로SendMessageA 함수에 브레이크포인트를 걸고 실행시키면문자를 받아와서 어떤 한 함수를 실행시킨다.그리고나서 EAX와 E98F842A를 비교하고결과에 따라서 점프를 하는데, 저 점프문을 패치해주지않으면아무리해도 입력만 하게되는 불상사를 낳을 수 있다. 위에서 점프문을 잘 패치하고 내려오다보면 이 함수 루틴을 만난다.이 곳에서 바로 복호화를 진행해준다.루틴은 위 그림을 보면 알 수 있다. 결국..
reversing kr ransomware 주어진 zip파일을 풀면 이렇게 세개의 파일이 나온다. 일단 readme.txt 부터 열어보면파일을 Decrypt 하란다. 파일 종류는 exe인 것 같다. run.exe 을 실행하면 이런 화면이 뜬다.Key를 입력하면 그 Key를 가지고 Decrypt 하는건가보다.5천억을 진짜 입금할 순 없으니 살펴보자. 일단 이건 암호화 된 파일이다. 뭔지 하나도 모르겠다.. 대충 아무 값이나 넣고 진행을 해보자. 흔히 보던 모습이 모이는 것 같긴하다.. 올리디에 던져서 분석을 좀 진행해봤다.위 그림의 부분은 그렇게 중요하지는 않다.암호화된 파일을 하나씩 읽어오는 작업을 하는 부분이다. 이 부분이 진짜 중요한데, 읽어온 값하고 입력받은 키 값을 이용해서암호화된 파일을 복호화 시키는 것이다위의 코드를 대충 정리하자면복호..
reversing kr ImagePrc ImagePrc.exe 파일이다. 실행시키면 그림을 그릴 수 있다.아무그림이나 대충 그려보자. 당연히 틀렸다고 말한다. 문자열 검색을 해보니 Wrong 도 있고Button도 있고.. 일단 저쪽으로 가보자 무언가 15F90의 크기만큼 계속 비교한다.그림의 15F90 크기만큼 비교한 뒤에, 맞으면 Wrong을 출력하지 않는 프로그램이다. BitBlt는 프로그램내에 저장되있는 비트맵 이미지를 지정된 크기만큼 복사해서 윈도우의 지정된 좌표에다 그려라.라는 함수이다.한마디로, 여기 BitBlt 함수의 너비와 높이를 참고하면 프로그램에서 요구하는비트맵의 너비와 높이를 알 수 있다.너비는 C8(200), 높이는 96(150)이다.그래서 찾아가보면 정말로 15F90 크기 만큼의 데이터들이 파일 끝 부분에 붙어있다.이 ..
reversing kr Replace 처음 파일을 다운로드받으면 Replace.exe 파일 하나가 주어진다. 실행하면 이렇게 입력받는 부분이 있다. 아마 검사해서 맞으면 Correct 라고 띄워주겠지.유의할점은 숫자만 입력가능하다 공백도, 문자도 다 불가능하다. 아무 숫자나 입력하고 Check를 눌렀을때.. 뻑난다.. 올리디에 던져서 성공문을 찾아보았다. 없다.의심가는건 맨위의 h4`~~ 정도? GetDlgItemInt는 숫자를 받아오는 함수이다.입력을 숫자로만 할 수 있었으니까, 여기에 브레이크포인트를걸고 살펴보도록하자. GetDlgItemInt 함수에 브레이크포인트를 건 상태에서 1111을 입력하고Check를 눌러주었다. 걸렸다. 사진을 대충 설명하자면GetDlgItemInt 함수에서 받아온 숫자를4084D0 에 저장하고나서0040466..
reversing kr Music Player zip파일을 압축해제하면 다음과 같이 3개의 파일이 나온다. ReadMe.txt를 읽어보면 이 MP3 Player는 1분 제한이 있고, 1분 이상 재생하면 플래그를 얻는다고한다. 실행시켰다. 1분동안 듣고나니 1분 미리듣기만 가능하다고 메시지박스가 뜬다. 올리디로 던져서 MsgBox라는 함수에 모두 브레이크포인트를 잡아주었다.이제 저 미리듣기만 가능합니다. 라고 뜨는 부분에서 브레이크포인트가 잡히겠지 잡혔다. 바로 이 부분이다근데 어디서 시간을 검사하는건가?위아래로 조금씩 더 훑어보았다. 저 MsgBox 함수 조금 위 부분에 보면CMP EAX,0EA60 이 있다.16진수 EA60은 10진수로 60000이다. 즉 1분이다이 부분을 1분보다 초과되도록 바꿔주자 필자는 FA60으로 바꾸어주었다. 하지만 EA6..
reversing kr Easy ELF elf 파일이다. elf 파일은 리눅스상에서 쓰여지는 파일 형식이다. elf다.. 하.. 올리디는 당연히 안되서 IDA로 열어보았다. 열자마자의 사진이다. 별로 중요하지않다. 이곳이 바로 입력받은걸 토대로 하나하나 비교해주는 곳이다.대충 정리하자면 5개의 문자를 비교한다.입력받은 5개의 문자를 연산한뒤에 비교한다.첫번째 34 ^ 78두번째 31세번째 7c ^ 32네번째 dd ^ ffffff88다섯번째 58 ^ 0이렇다.이걸 토대로 코드를 짜서 해결하였다. 12345678910string = [] string.append(chr(0x34 ^ 0x78))string.append(chr(0x31))string.append(chr(0x7c ^ 0x32))string.append(chr(0xdd ^ 0x88))s..