일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- vscode
- web
- 해킹문제
- reversing
- 바이러스
- 해킹
- 백준
- 파이썬웹
- 장고
- 취약점점검
- rev-basic-4
- 웹해킹
- AndroidOS
- 리버싱
- jango
- rev-basic-3
- djangovscode
- csaw 2018
- rev-basic-6
- basic4
- 파이썬
- 코로나바이러스
- 모세포
- 코로나
- dreamhack
- 해커
- Django
- csaw
- 장고vscode
- webhacking.kr문제풀이
- Today
- Total
목록reversing (2)
Kilkat
해결과정main 함수를 디컴파일하면 위와 같음핵심이 되는 if문의 sub_140001000을 디컴파일하여 살펴보면 아래와 같음 for문을 0x12(18)번 수행하며, if문에서 byte_140003020[*(unsigned __int8 *)(a1+i)] != byte_140003000[ i ] 두 값이 같지 않다면 0을 반환하고 같다면 1을 반환하는 형식으로 구성되어 있음 byte_140003020의 값이 byte_140003000에 몇번째에 존재하는지 뽑아서 해당 10진수 값을 ASCII로 변환하면 문제 해결이 가능해 보임 해결arr1 = [0x00, 0x4D, 0x51, 0x50, 0xEF, 0xFB, 0xC3, 0xCF, 0x92, 0x45, 0x4D, 0xCF, 0xF5, 0x04, 0x40, 0..
해결과정ida에서 main 함수를 f5를 눌러 decompile을 수행함 if 구문을 통해서 sub_140001000 함수를 통해서 값을 비교하고 있음 해당 함수를 확인해보면 16 * (a1 + i)의 경우 a * 2^n == a > 4 로 변경이 가능함(a1 + i) -> byte_14003000[ i ]에서 값을 가져와서 (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, 0..