전체 글 80

[dreamhack] level 2 crc 문제 풀이

바이너리 분석crc 파일을 실행하면 위와 같은 결과를 얻을 수 있다. 특정 문자열이 출력되고 stage1이라는 문구와 함께 입력란이 나온다. 아무 값이나 넣어보면 nop 이라는 문구가 출력이 되는 것을 볼 수 있다. 입력란에 특정한 값을 넣어야 플래그를 주는 바이너리인 것 같다. IDA로 바이너리 분석해당 파일을 IDA를 통해 main 함수를 찾고 main함수를 디컴파일 하게 되면위의 코드를 살펴보면 sub_1357() 함수의 반환값이 1이 아니거나 sub_14DC 함수의 반환값이 1이 아니면 nop이라는 문구를 출력한다. 그리고 다른 경우에는 flag를 출력하는 것을 알 수 있다. 따라서 해당 함수들이 1을 반환해야 한다는 것을 알 수 있다. sub_1357() 함수 분석1. v2라는 변수에 사용자가 ..

[dreamhack] level2 many-shuffle 문제 풀이

일단 해당 문제 파일에 있는 바이너리를 실행해보면 위와 같은 결과를 확인할 수 있다. 해당 바이너리에서는 랜덤한 문자열을 생성하고 Shuffled String 이라는 문자열을 출력한 뒤에 사용자에게 입력을 받는다. 하지만 입력받은 값이 특정한 값이 아니라면 Wrong이라는 문자열을 출력한다. IDA로 파일을 분석해보자main 함수를 디컴파일하면 위와 같은 정보를 얻을 수 있다. 해당 코드를 하나하나 살펴보면, 1. [A-Z]{16}에 해당하는 무작위 문자열 생성 후 s에 저장한다.2. 변수 s에 저장된 값을 dest라는 변수에 복사한다.3. dest와 s를 번갈아가면서 byte_4020 값에 따라 셔플을 진행한다.4. 그리고 셔플을 진행한 값을 출력한다. 5. 사용자에게 문자를 입력받은 뒤에  !strc..