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
- rev-basic-4
- csaw
- 코로나
- 해킹문제
- reversing
- 취약점점검
- 파이썬웹
- webhacking.kr문제풀이
- 해킹
- 바이러스
- 리버싱
- 웹해킹
- Django
- 파이썬
- 코로나바이러스
- 모세포
- jango
- 해커
- AndroidOS
- csaw 2018
- basic4
- rev-basic-3
- djangovscode
- rev-basic-6
- 장고
- 백준
- vscode
- 장고vscode
- dreamhack
- web
Archives
- Today
- Total
Kilkat
[dreamhack] rev-basic-4 본문
해결과정
ida에서 main 함수를 f5를 눌러 decompile을 수행함
if 구문을 통해서 sub_140001000 함수를 통해서 값을 비교하고 있음
해당 함수를 확인해보면 16 * (a1 + i)의 경우 a * 2^n == a << n이 성립하므로, (a1 + i) << 4 | (a1 + i) >> 4 로 변경이 가능함
(a1 + i) << 4 의 경우 unsigned __int8로 캐스팅 되며, unsigned __int8의 경우 1Byte(0 to 255)의 값을 가짐
-> byte_14003000[ i ]에서 값을 가져와서 (a1 + i) << 4 | (a1 + i) >> 4 연산 후 나오는 데이터를 ASCII로 변환해주면 될것으로 생각됨
풀이
arr = [0x24, 0x27, 0x13, 0xC6, 0xC6, 0x13, 0x16, 0xE6, 0x47, 0xF5, 0x26, 0x96, 0x47, 0xF5, 0x46, 0x27, 0x13, 0x26, 0x26, 0xC6, 0x56, 0xF5, 0xC3, 0xC3, 0xF5, 0xE3, 0xE3]
for i in range(len(arr)) :
print(chr((arr[i] << 4 | arr[i] >> 4) % (16 * 16)), end='')
# print(chr((arr[i] * 16 | arr[i] >> 4) % (16 * 16)), end='')
성공!
'Security > reverse engineering' 카테고리의 다른 글
[dreamhack] rev-basic-6 (0) | 2024.12.25 |
---|---|
[dreamhack] rev-basic-3 (0) | 2024.12.10 |
Csaw 2018 Quals bigboy (0) | 2024.12.04 |
(Linux) .so hooking (0) | 2024.11.14 |
공주대학교 리버싱문제(중) KingKEY (0) | 2018.08.04 |
Comments