Reversing/WriteUp2017. 3. 3. 02:19

문제사이트 : Codegate

문제이름 : RamG

링크 : X


풀이


↑프로그램을 실행하면 나오는 화면이다. 4를 누르면 히든메뉴가 나타나는데,

두개의 문자열을 입력받고 어떠한 과정을통해 c라는 파일 하나가 생성된다.



↑보다시피 c라는 파일은 뒤죽박죽이다. 일단 프로그램을 분석해보았다.



↑올리디버거를 켜기 전에 BinText로 쭉 훑어보았다.

그 중 상당히 수상해보이는 문자열들이 보였다. 개수도 같고 입력받는 부분 바로전에 쓰여있어

메모장에 적어두었다.



↑문제파일의 기능 중 두 문자열을 XOR해주는 기능이 있었다. 

아까 의심스러웠던 문자열을 시험삼아 해보다가 수상한 문자열 하나가 나왔다.

일단 이것도 메모장에 적어두었다.



↑본격적으로 분석하였다. 처음 문자열을 입력받은 후 진행되는 연산이다.

아까 수상하다고생각한 MVYLXYUARJ 와 474591474591을 xor하는 모습이 보였다.



↑그래서 RamG 기능으로 XOR해보았더니 yamyambugs라는 문자열이 나왔다.

이것이 첫번째 시크릿 코드이다.



↑스테이지 2로 넘어가려는 길목에 상당히 견고해보이는 안티디버깅 코드가 보였다.

레지스트리 변조나 점프문을 NOP으로 바꾸면 지나갈 수 있다.



↑두번째 스테이지에서는 cmp구문이 3개가 나온다.

덤프로 들어가서 맞게 변조해주면 지나갈 수 있다.



↑세번째 스테이지 에서는 레지스트리가 있는지와 그 내용을 점검하여 맞다면 hel을 저장한다.

hel을 저장할 수 있게 코드를 잘 수정해주면 된다.



↑4번째 스테이지는 2번째와 동일하게 진행하면 된다.



↑5번째 스테이지로 가는 길목에 안티디버깅이 있는데 전과 동일하게 넘어가면된다.

마지막은 1번째 스테이지 처럼 문자열을 비교하는데, 원리는 같고 예상한대로 의심되었던

hellowfish를 입력해주면 된다.



↑메모는 리버싱문제의 필수인듯 하다.


↑c파일이 생성되고 뒤에 확장자 .png를 붙이게 되면 플래그가 보인다.



이 문제는 유난히 운이 좋게 얻어걸린(?) 부분이 많았던 문제였다.

어렵긴 했지만 푸는과정이 재미있어서 좋은 문제라고 생각된다.



'Reversing > WriteUp' 카테고리의 다른 글

[Plaid CTF] zipper  (0) 2017.04.30
[Reversing.kr] CSHARP  (0) 2017.02.21
[Reversing.kr] Ransomware  (0) 2017.02.21
[Reversing.kr] Replace  (0) 2017.02.21
[2017codegate] BabyMISC  (0) 2017.02.17
Posted by BadSchool