※ 관련 개념은 방학활동 / 개념정리를 참고해주세요 ※
해당 문제들은 X64dbg, Ollydbg(올리디버거) 또는 HXD를 사용하였습니다.
# Dreamhack REV-BASIC-1
[파일 분석]
1) input 함수를 통해 flag 값을 입력하면 'chall1.7FF6956813B6' 함수에서 입력 값 비교한 후, Correct나 Wrong 메시지 출력
→ 해당 함수 따라가기 (test 위의 call 부분 더블클릭)
1) 문자 하나하나에 대해 비교하여 수행함을 알 수 있음
→ 각 문자열을 다 합치면 플래그 값이 나온다.
# Dreamhack REV-BASIC-3
[파일 분석]
1) input 함수를 통해 flag 값을 입력하면 'chall3.7FF6CBF01000' 함수에서 입력 값 비교한 후, correct나 wrong 메시지 출력
→ 해당 함수 따라가기 (call 부분 더블클릭)
◇ 어셈블리어에서는 16진수를 사용하기 때문에 숫자들을 해석하거나, 이용할 때는 프로그래밍 계산기를 이용하거나, 10진수로 바꿔서 사용해야 한다.
1) [cmp rax, 18] : 사용자 입력 값 0x18번 비교
→ 0x18(16)=24(10)
2) [lea ecx, qword ptr ds:[rcx+rdx*2]]
→ 사용자 입력값 비교 수행
3) [lea rcx, qword ptr ds:[7FF6C4AD3000]]
→ 7FF6C4AD3000주소에 rcx 값 저장
따라서, 해당 주소를 따라가야한다. (아래 덤프 쪽에서 찾기 (Ctrl+G)) (아래 사진 참고)
1) 사용자의 입력 값을 연산하여 rcx 값과 비교하기
→ 연산과정을 역연산(XOR)하여 flag 값 도출
- 16진수 값
49 60 67 74 63 67 42 66 80 78 69 69 7B 99 6D 88 68 94 9F 8D 4D A5 9D 45
- 10진수 값
I`gtcgBf.xii{.m. h...M¥.E
[XOR 값 구하기]
☆ XOR 구하는 코드 짜보기
# Basic RCE L02
[파일 분석]
1) 왼쪽의 16진수들을 오른쪽에서 아스키코드로 변환한 값을 나타냄
변환된 값을 보다 보면, 'yeah, you did it' 뒤에 정답이 나오는 것을 볼 수 있다.
# Basic RCE L04
[실행 화면]
파일을 다운 받아서 실행해보면, cmd창이 열리면서 '정상'이 계속 출력됨
[파일 분석]
실행했을 떄 1초마다 '정상' 등의 글이 출력되기 때문에 함수가 사용되었다고 생각되어 '함수 검색'을 해보았다.
'Sleep'와 'IsDebuggerPresent'가 있는 걸 볼 수 있다.
더블 클릭해서 함수의 위치로 이동하면 'timeout'을 이용해 1초 후에 함수를 호출하는 것을 알 수 있다.
따라서, 함수의 이름인 'IsDebuggerPresent'가 답인 것을 알 수 있다.
# Dreamhack Reversing Basic Challenge #0
[파일 분석]
문자열 참조 기능을 통해 'correct'를 찾았다.
input을 받은 후에 맞으면 correct, 틀리면 wrong을 출력한다.
함수를 따라가다 보면, flag로 보이는 문자열을 찾을 수 있다.
'5. 방학 활동 > Write UP' 카테고리의 다른 글
[2023.02.11] 워게임&CTF 스터디 1팀 문제풀이(포너블(2))] (0) | 2023.02.26 |
---|---|
[2023.02.11] 워게임&CTF 스터디 1팀 문제풀이(포너블(1))] (0) | 2023.02.25 |
[2023.02.02] 워게임&CTF 스터디 1팀 문제풀이(웹)] (0) | 2023.02.19 |
[2023.2.12] 워게임&CTF 스터디 2팀 문제풀이(fly_me_to_the_moon) (0) | 2023.02.13 |
[2022.07~08] 백준 알고리즘 문제 풀이 스터디 (0) | 2022.09.15 |