Wargame/dreamhack 7

dreamhack rev-basic-6

문제 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출력하는 입력값을 찾으세요! 언제나 그랬듯 [오른쪽 마우스 - 다음을 찾기 - 모든 모듈 - 문자열 참조]를 눌러서 문자열을 검색해준다! Correct가 보이니 해당 위치로 이동한 후, 분기점을 찾아보자. 분기점은 00007FF711251175이고, 00007FF71125116E에서 호출되는 함수의 결과에 따라 Correct와 Wrong이 나누어진다. 00007FF71125116E에 BP를 걸어둔 다음 살펴보자. 함수를 살펴보면 다음과 같다. (abcd를 입력한 후, 첫 번째 도는 경우) 1. rax에 0 넣기(반복문이 ..

Wargame/dreamhack 2021.06.29

dreamhack rev-basic-5

문제 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출력하는 입력값을 찾으세요! Correct가 출력되는 부분을 찾았다! 00007FF655AC117E 주소 결과에 따라 Correct와 Wrong이 출력되는 것 같다. 함수 부분은 이렇게 되어 있고, 요약하면 아래와 같다. 입력된 값 중 가장 첫 번째 값을 0x31(1), 두 번째 값을 0x32(2)라고 하자. 1. eax에 입력된 값 중 가장 첫 번째 값 넣기 => eax = 31 2. ecx에 + 1 수행(이때 ecx의 값은 반복문을 돌면서 값이 1씩 커진다.) 3. eax+ecx 주소에 해당되는 값을 ecx에 넣기 =..

Wargame/dreamhack 2021.05.26

dreamhack rev-basic-4

문제 ; 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출력하는 입력값을 알아내세요. 언제나 그랬듯 correct가 출력되니까 correct 문자열을 찾아서 해당 주소로 가보자! 해당 주소로 가보면 바로 위에 je, 그 위에 test, 그 위에 call이 있음을 알 수 있다. 아무래도 call의 결과에 따라서 correct와 wrong이 정해지는 것으로 보인다. 00007FF7234E117E 주소에 BP를 걸어둔 후 실행해보자. 함수 코드는 위와 같고 정리하면 아래와 같다. 첫 번째 입력값 = 0x31(1) 이라고 해보자. 1. eax에 첫 번째 입력 값을 넣고 오른쪽으로..

Wargame/dreamhack 2021.05.26

dreamhack rev-basic-3

문제 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출력하는 입력값을 찾으세요! 성공 구문을 찾아보자! Correct가 있음을 볼 수 있다. 해당 위치로 가서 분기점을 찾아보자. 성공과 실패를 가르는 분기점이 위의 선택된 주소에 나타난 것을 볼 수 있다. eax 값이 0일 경우에, wrong으로 가게 된다. eax 값은 test 명령어 위의 call 명령어로 불러지는 함수에서 정해질 테니 00007FF7458D116E에 BP를 걸어두고 실행해보자. 함수에 들어가면 위와 같은 명령어들이 보인다. (1) rcx에 00007FF7458D3000 dump 주소값을 넣는다. (2)..

Wargame/dreamhack 2021.05.19

dreamhack rev-basic-2 풀이

문제 ; 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출력하는 입력값을 찾으세요! chall2.exe를 x64dbg에 넣어보면 위처럼 뜬다. 문자열 검색을 해보자! (오른쪽 마우스 - 다음을 찾기 - 모든 모듈 - 문자열 참조) Correct 문자열이 보인다. 해당 위치로 이동해보자. rev-basic-1 문제와 동일하게 화살표로 가리켜진 함수에서 비교가 발생하는 것으로 추측된다. 해당 부분에 BP를 걸어두고 프로그램을 실행시켜보자. 자세히 살펴보자. 00007FF76E441028 주소에서 7ff76e443000 주소를 rcx로 가져온다. 00007FF76E441033 ..

Wargame/dreamhack 2021.05.15

dreamhack rev-basic-1 풀이

문제 ; 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출력하는 입력값을 알아내세요. chall1.exe 파일을 넣으면 위와 같은 화면이 뜬다. 문자열 검색을 해보자! Correct 문자열이 있음을 볼 수 있다. Correct가 있는 곳으로 가보면 JE 명령어가 보인다. 그 위에 Call을 통해 함수를 호출하는데, 저 함수에서 비교가 일어나는 것을 유추해볼 수 있다. test위의 call 명령어에 BP를 걸어둔 후 실행을 시켜보자. call을 통해 들어가보면 위와 같이 문자 하나하나에 대해서 비교를 수행하고 있음을 볼 수 있다. 문자열을 합치면 Compar3_the_ch4..

Wargame/dreamhack 2021.05.15

dreamhack rev-basic-0 풀이

문제 ; 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출력하는 입력값을 찾으세요! 64비트 exe 프로그램이므로, ollydbg만 있는 경우 하단의 링크를 통해 프로그램을 다운받자! https://sourceforge.net/projects/x64dbg/ x64dbg Download x64dbg for free. An open-source x64/x32 debugger for windows. An open-source x64/x32 debugger for windows. Development is done on GitHub (https://github.com/x64dbg..

Wargame/dreamhack 2021.05.15