챌린지 49

bughela - EASY_CrackMe

wargame.kr의 15번째 문제인 EASY_CrackMe다. 이번 문제는 이름에서 알 수 있듯이 리버싱 문제다. Start 버튼을 누르면 문제 파일을 다운로드할 수 있는 링크로 이동하며 윈도우즈 7에서 비주얼 스튜디오 2008을 이용하여 컴파일되었다고 알려준다. 프로그램 아이콘은 MFC며 이를 실행시켜보면 간단한 폼과 버튼이 나타난다. 어떤 글자를 입력하든 아무 문자열이나 입력하든 check 버튼을 누르면 "nono..."라는 메시지와 함께 프로그램이 종료된다. 정보를 더 얻을 순 없으니 디버거로 열어서 확인해보자. 일단 문자열을 확인해보니 MFC 프레임워크에서 사용하는 듯한 여러 문자열들을 제외하고 위처럼 "_my_b", "birth", "G00d!", "nono.." 등 프로그램에서 사용되는 문자..

bughela - php? c?

wargame.kr의 14번째 문제인 php? c?다. 32비트 애플리케이션의 정수형 타입을 알고 있냐는 힌트가 주어진다. 32비트의 정수면 C언어에서는 -2^31 ~ 2^31-1까지가 아니었던가? 왠지 오버플로우를 통해 해결하는 문제일 것 같은데, 일단 Start 버튼을 눌러 문제를 확인해보자. 별다른 정보는 없고 두 수를 입력하여 try로 비교하는 것 같은데 일단 get source 버튼으로 문제를 확인해보자. 간단한 코드로 POST로 받은 폼 데이터를 정수 자료형으로 변환하여 비교하는 것 같다. 그런데 첫번째 입력은 exec() 함수 호출을 통해 "/tmp/p7"에 위치한 파일의 매개변수로 사용되고 있다. 그리고 파일의 실행 결과를 두번째 입력과 비교하여 같은지 검사하고 있는데 이 p7 파일의 실행..

bughela - img recovery

wargame.kr의 13번째 문제인 img recovery다. PNG 이미지 파일을 복구하라고 하는데 이게 정말 PNG 파일인지 의심해보라는 힌트가 나와 있다. 파일에 다른 데이터를 숨기는 스테가노그라피 문제는 아니고 포렌식이라고 하는데 포렌식은 경험이 없지만 일단 Start 버튼을 눌러 문제를 확인해보자. 들어가자마자 눈아픈 문양들과 함께 코드를 찾으라는 메시지와 입력폼 하나가 주어진다. HTML 코드에서는 별로 얻을 정보가 없고 이 배경 이미지를 이루고 있는 pattern.png라는 파일을 찾을 수 있었는데 아마 이 파일이 분석 대상인 것 같다. 이 파일은 언뜻 보기에는 그냥 별볼일 없는 파일처럼 보이는데 어떤 비밀이 숨겨져 있는걸까? 무슨 암호 같기도 하고 일정한 패턴이 있는것 같기도 한데 일단 ..

bughela - type confusion

wargame.kr의 12번째 문제인 type confusion이다. 간단한 비교 챌린지라고 한다. 이 문제의 이름이 힌트라도 하는데 일단 Start 버튼을 눌러 문제를 확인해보자. 간단한 입력폼 하나만 나와있다. HTML 코드를 보면 간단한 자바스크립트로 lock을 걸어서 여러번 시도하지 못하게 하고 HTML 태그 대신 POST 요청을 보내고 있다. 약간 운영체제의 레이스 컨디션을 방지하려는 건지 뭔지 잘 모르겠지만 어쨌든 입력폼에 넣은 값으로 요청을 보내서 그 결과에 플래그가 포함되어 있다면 이를 출력하는 것 같은데 이쪽 부분에서는 더이상 할 수 있는게 없으므로 view-source를 눌러서 소스를 확인해보자. 입력폼에서 POST로 받은 데이터(json)를 gen_key() 함수를 이용하여 생성된 랜..