Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 1546
- Django
- 백준
- 코로나
- csaw
- 바이러스
- csaw 2018
- djangovscode
- 코로나바이러스
- 해커
- jango
- 해킹문제
- vscode
- 파이썬웹
- dreamhack
- 코로나바이러스19
- 정보보호영재원
- webhacking.kr문제풀이
- web
- 해킹
- 웹해킹
- 리버싱
- 장고vscode
- 파이썬
- AndroidOS
- 취약점점검
- 장고
- covid19
- 모세포
- rev-basic-3
Archives
- Today
- Total
Kilkat
[dreamhack] rev-basic-3 본문
ida로 f5를 눌러 디컴파일을 수행하면 다음과 같이 main function의 코드를 확인할 수 있음
프로그램 동작 로직을 분석하면 다음과 같음
1. 사용자 입력값 대기
2. 사용자 입력값 비교
3. Correct 출력 or Wrong 출력
if구문에서 사용자 입력값과 비교를 하는 function(sub_7FF62D5D1000)을 따라가보면 다음과 같음
사용자 입력값과 XOR연산을 통해 값을 byte_7FF62D5D3000[i] 값과 비교하고 있음
byte_7FF62D5D3000을 확인해보면 49h ~ dup(0)까지 데이터가 포함되어 있는 것을 확인 가능함
XOR의 특성인 a ^(xor) b = c, c ^(xor) b = a 해당 내용이 성립하는 것을 활용하여 복호화 시킬 수 있음
(byte_7FF62D5D3000[i] - 2 * i) ^ i != a1 + i
arr = [0x49, 0x60, 0x67, 0x74, 0x63, 0x67, 0x42, 0x66, 0x80, 0x78, 0x69, 0x69, 0x7B, 0x99, 0x6D, 0x88, 0x68, 0x94, 0x9F, 0x8D, 0x4D, 0xA5, 0x9D, 0x45]
for i in range(len(arr)) :
flag = (arr[i] - (2 * i)) ^ i
print(chr(flag), end = '')
성공!
'Security > reverse engineering' 카테고리의 다른 글
Csaw 2018 Quals bigboy (0) | 2024.12.04 |
---|---|
(Linux) .so hooking (0) | 2024.11.14 |
공주대학교 리버싱문제(중) KingKEY (0) | 2018.08.04 |
프로그램 시리얼 해킹2(코드엔진 advance 03.exe) (0) | 2018.01.10 |
프로그램 시리얼 해킹1(코드엔진 basic3) (2) | 2017.12.25 |
Comments