전체 글 82

[dreamhack] level 1 아 문제 이름 뭘로하지 문제 풀이..

ida로 디컴파일 해보니 사용자에게 입력을 받고, s를 파라미터로 하는 함수인 sub_145A의 값이 참이면 correct 출력, 아니라면 wrong을 출력한다. 해당 문제는 어떤 값을 입력해야 correct가 나오는지 알아내야 하는 문제 같다. sub_145A 함수 분석만약 input 값의 길이가 39가 아니라면 0을 반환v2~v7 : 순서대로 input + 8, 24, 32, 36, 38을 연산한 값을 저장s1[0~3] : 순서대로 Input,  v2, input + 16, v3를 저장sub_1273 함수 호출sub_139D 함수 호출s1과 s2의 첫 0x27 바이트를 비교하여 결과가 0이라면 참(1)을 반환하고 아니라면 거짓(2)를 반환. ** main 함수에서 correct가 나오려면 memcmp..

[dreamhack] level 2 ezmix

바이너리 분석문제에서 제공하는 main 파일을 실행해보니 위와 같은 문자가 출력이 됐다. 뭔지 모르겠으니 한번 ida로 찾아보자. IDA 분석main 함수를 디컴파일하여 c 코드를 살펴보면 위와 같은 코드를 확인할 수 있다. 위의 코드를 보니 a1이라는 값이 2보다 작거나 같으면 아까 봤던 문자열을 출력하고 프로그램을 종료 시킨다는 것을 알 수 있다. a2가 대체 어디서 나온 값인지 궁금해서 코드를 살펴보니 main 함수의 파라미터였다. 그렇다는건 main 파일을 실행할때 파라미터를 넘겨줘야 한다는 뜻같다. 그래서 한번 하라는대로 입력해봤는데 뭔가가 됐다. 특정 문자열을 입력할 수 있는데 이 문자열을 찾으면 flag를 찾을 수 있는 문제로 보인다.한번 ida로 계속 분석해보자. 다시 올라가서 main 함..

[dreamhack] level 2 crc 문제 풀이

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