[dreamhack] rev-basic-6 문제풀이
2021. 9. 30. 23:43
워게임/dreamhack
[Reversing] rev-basic-6 문제풀이 문제를 확인해보자. Correct를 출력하는 FLAG 값을 찾는 문제이다. 문제 파일을 x64dbg 프로그램으로 열어보자. correct를 출력하는 flag 값을 찾아야하기 때문에 문자열 참조 찾기를 통해 correct 문자열을 찾아보자. 사용자가 FLAG를 입력하고 chall6.7FF613711000 함수에서 입력 값 비교를 한 뒤, Correct/Wrong 메시지를 출력한다. 해당 함수를 따라가보자. 위 함수에서 사용자 입력 값에 대해 수행하는 연산은 다음과 같다. [cmp rax, 12] // 18번 반복 [movzx eax, byte ptr ds:[rcx+rax] // n번째 문자열 eax에 저장 [lea rcx, qword ptr ds:[7FF..
[dreamhack] rev-basic-5 문제풀이
2021. 9. 16. 22:00
워게임/dreamhack
[Reversing] rev-basic-5 문제풀이 문제를 확인해보자. Correct를 출력하는 FLAG 값을 찾는 문제이다. 문제 파일을 x64dbg 프로그램으로 열어보자. correct를 출력하는 flag 값을 찾아야하기 때문에 문자열 참조 찾기를 통해 correct 문자열을 찾아보자. 사용자가 FLAG를 입력하고 chall5.7FF662931000 함수에서 입력 값 비교를 한 뒤, Correct/Wrong 메시지를 출력한다. 해당 함수를 따라가보자. 위 함수에서 사용자 입력 값에 대해 수행하는 연산은 다음과 같다. [cmp rax, 18] // 24번 반복 [mov eax, byte ptr ds:[rcx+rax]] // 첫번째 입력 값 eax에 저장 [inc ecx] // ecx 값 증가 [movz..
[dreamhack] rev-basic-4 문제풀이
2021. 9. 16. 21:39
워게임/dreamhack
[Reversing] rev-basic-4 문제풀이 문제를 확인해보자. Correct를 출력하는 FLAG 값을 찾는 문제이다. 문제 파일을 x64dbg 프로그램으로 열어보자. correct를 출력하는 flag 값을 찾아야하기 때문에 문자열 참조 찾기를 통해 correct 문자열을 찾아보자. 사용자가 FLAG를 입력하고 chall4.7FF7312B1000 함수에서 입력 값 비교를 한 뒤, Correct/Wrong 메시지를 출력한다. 해당 함수를 따라가보자. 해당 함수에서 사용자 입력 값에 대해 수행하는 연산은 다음과 같다. [cmp rax, 1C] // 사용자 입력 값을 0x1C=28번 반복하여 비교한다. [movzx eax, byte ptr ds:[rcx+rax]] // i번째 사용자 입력 값을 eax에..
[dreamhack] rev-basic-3 문제풀이
2021. 9. 12. 23:23
워게임/dreamhack
[Reversing] rev-basic-3 문제풀이 문제를 확인해보자. Correct를 출력하는 FLAG 값을 찾는 문제이다. 문제 파일을 x64dbg 프로그램으로 열어보자. correct를 출력하는 flag 값을 찾아야하기 때문에 문자열 참조 찾기를 통해 correct 문자열을 찾아보자. 사용자가 FLAG를 입력하고 chall3.7FF6CBF01000 함수에서 입력 값 비교를 한 뒤, Correct/Wrong 메시지를 출력한다. 해당 함수를 따라가보자. 음 상당히 난해하다. 어셈블리어를 이제는 봐야한다. 눈을 감는다고 해결되지 않는다. 한숨을 크게 들이쉬고 시작해보자. 먼저 [cmp rax, 18] 을 통해 사용자 입력 값을 0x18번 비교한다. FLAG의 문자열 길이는 0x18=24 로 확인할 수 있..
[dreamhack] rev-basic-2 문제풀이
2021. 9. 12. 22:00
워게임/dreamhack
[Reversing] rev-basic-2 문제풀이 문제를 확인해보자. Correct를 출력하는 FLAG 값을 찾는 문제이다. 문제 파일을 x64dbg 프로그램으로 열어보자. correct를 출력하는 flag 값을 찾아야하기 때문에 문자열 참조 찾기를 통해 correct 문자열을 찾아보자. 사용자가 FLAG를 입력하고 chall2.7FF618DF1186 함수에서 입력 값 비교를 한 뒤, Correct/Wrong 메시지를 출력한다. 해당 함수를 따라가보자. [cmp rax, 12] 를 통해 문자열을 0x12번 비교한다는 것을 알 수 있다. 문자열 비교 구문은 [cmp dword ptr ds:[rcx+rax*4], edx] 이다. 사용자가 입력한 edx 값과 (rcx+rax*4) 값을 비교하는데 rcx 에 ..
[dreamhack] rev-basic-1 문제풀이
2021. 9. 12. 21:00
워게임/dreamhack
[Reversing] rev-basic-1 문제풀이 문제를 확인해보자. 어라 rev-basic-1 문제랑 똑같다. 프로그램만 다른가보다. x64dbg로 해당 파일을 열어보자. correct를 출력하는 flag 값을 찾아야하기 때문에 문자열 참조 찾기를 통해 correct 문자열을 찾아보자. 사용자가 FLAG를 입력하고 chall1.7FF6CBF01000 함수에서 입력 값 비교를 한 뒤, Correct/Wrong 메시지를 출력한다. 해당 함수를 따라가보자. 비교를 수행하는 cmp 구문에서 비교 문자열이 확인된다. 해당 문자를 조합하면 "Compar3_the_ch4ract3r" 이다. 입력 값으로 넣어보자. 문제풀이 끗
[dreamhack] rev-basic-0 문제풀이
2021. 9. 12. 20:45
워게임/dreamhack
[Reversing] rev-basic-0 문제풀이 문제를 확인해보자. correct를 출력하는 올바른 입력 값을 찾는 문제이다.문제 파일을 다운로드 해보자. 다운받은 chall0.exe 파일을 x64dbg로 open 하도록 하자. 문제는 correct 문자열을 출력시키는 flag 값만 찾으면 되기 때문에 아래와 같이 문자열 참조 찾기 기능을 통해 "correct"를 검색해주도록 한다. "correct" 문자열이 위치한 주소를 찾았다. 해당 열을 더블클릭해서 해당 위치를 찾아가보자. 어셈블리어 예전엔 읽었는데 요새는 뭐 흐름만 알겠다. 까막눈으로 대충 읊어보면 Input: 으로 사용자 입력을 받아 비교를 하고 맞으면 Correct, 틀리면 Wrong을 출력하는 것으로 보인다. test eax,eax를 통..
[dreamhack] session 문제풀이
2021. 8. 30. 23:28
워게임/dreamhack
[WEB] session 문제풀이 문제를 확인해보자. 쿠키/세션을 조작하여 admin 계정으로 로그인에 성공하면 flag를 획득할 수 있는 문제이다. 접속해보자. login 외에 별다른 기능은 안보인다. 소스코드를 확인해보자. #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' users = { 'guest': 'guest', 'user': 'user1234', 'admin': FLAG } session_sto..
[dreamhack] devtools-sources 문제풀이
2021. 8. 30. 23:02
워게임/dreamhack
[WEB] devtools-sources 문제풀이 문제를 확인해보자. 개발자 도구의 sources 탭 기능을 이용해 flag를 찾으라고 한다. 문제 파일을 다운로드 받고 페이지에 접속해보자. 일단 F12를 눌러서 크롬 개발자 도구로 들어가보자. 개발자도구는 진입하면 바로 sources 탭을 보여준다. flag가 여기에 있다니 우리는 검색 기능을 사용해주도록 하자. 문제 파일이 여러개기 때문에 전체 검색(Ctrl+Shift+F) 기능을 이용해주자. 먼저 flag를 검색해보자. flag를 검색했더니 아무것도 안나온다. 그럼 flag의 형식인 "dh{" 를 검색해보자. 플래그가 너무나 쉽게 나왔다.... 문제풀이 끗