curons
2016년 PCTF 문제인 quick 문제이다. 프로그램은 swift언어로 짜여져있고 실행환경은 64비트 리눅스 환경이다.프로그램을 실행시키면 아래와 같이 문자열을 입력받는다. quick 파일을 Ida를 사용해서 분석해보면 main 함수에서 'Nope!'이란 문자열을 출력하는 부분을 찾을 수 있다. 아래의 사진에서 확인할 수 있듯이 'Nope!'이란 문자열을 출력하는 부분을 보면 조건문을 통해 'Good job!'이란 문자열을 출력하는것을 확인할 수 있다. 이 사진을 보면 'if(v35&1)'이라는 조거너문을 통해 문자열을 출력한다. 결국 v35가 1이여야 'Good job!'이란 문자열이 출력된다는 얘기가 된다. 사진의 맨 윗부분에서 확인할 수 있듯이 "v35 = sub_403660(v69,v68,v6..
프로그램을 실행하면, Name과 Serial을 입력받는다. 그리고 프로그램은 Wrong! 이라는 문구를 띄우고 있다. 올바른 Name과 Serial을 제대로 입력하면 Wrong!이라는 문구가 "Correct" 혹은 다른 문구로 바뀌지 않을까 싶다. 먼저 Olly를 사용하여 Entry Point를 찾아냈더니 위치가 402A70이었다. 프로램은 딱히 인증하는 버튼이 없기 때문에 다른 방법으로 Name과 Serial을 판별하고 있을거라 생각된다. 디버거로 Reference String을 찾아본 결과, Correct와 Wrong이라는 스트링을 찾을 수 있다. Wrong을 콜하는 부분에 Break Point를 걸고 프로그램을 실행했더니 프로그램이 실행되기 전에 해당 부분에서 Break가 걸린다. 인풋박스에 문자를..
Reversing.kr에서 Replace란 문제이다. 문제를 기술하기 전 리버싱 공부를 하는데 사용하는 디버거로는 Ollydbg를 사용하고 있다. 위의 사진이 Replace 문제의 파일이다. 입력할수 있는 칸이 있고 Check라는 버튼이 있으며 아래에는 Wrong이라는 메세지가 있다. 입력칸에는 숫자만 입력할 수 있게 되어있다. 디버거에 프로그램을 붙이고 실행해보았다. 아래와 같은 경고문이 뜨면서 프로그램이 죽어버린다. 프로그램을 천천히 분석하기 위해 프로그램의 Entry Point를 찾기러 했다. Entry Point란 프로그램이 실제로 실행되는 부분을 뜻하며 여기서 말하는 Entry Point는 프로그램이 실행되어 창이 실행되는 곳을 말한다.이 부분을 찾기 위해 디버거로 프로그램을 실행시키고 F8 단..