일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 메모리 포랜식
- Django
- 방명록 만들기
- 정보보호병 후기
- Layered Architecture
- Database
- frontend
- EER
- 행정지역 DB
- 소프트웨어 개발보안 경진대회
- 인턴 지원
- restapi
- 인턴 후기
- react
- Forensic 절차
- mysql
- riceteacatpanda
- 동읍면 DB
- ㅁㅇㅂ??ㅇㅈㄷ ㅎㅇㅌ...
- PyAmdecoder
- 3단계 지역 DB
- SessionAttribute
- reversing.kr
- webhacking 처음
- 소개딩
- jsp
- spring
- 네이버 인턴
- JSTL
- DBMS
- Today
- Total
웹찢남
Reversing.kr - Easy Crack 본문
리버싱 안한지 1년이나 됐는데 내일 bob ctf여서 한번 해보기로 했다...
안한지도 오래됐고 리버싱 초짜라 쉬운거만 풀자는 마인드로..ㅠㅠ
easy crackme는 실행하면 아래와 같은 창이 뜨는데 딱보니 답을 입력하면 correct가 나올 듯 하다.
이런 문제는 일단 아무 값이나 입력해보고 틀린 창의 string을 찾아보는 것으로 시작하자
보면 messagebox도 있구 Congratulation, Incorrect Password가 있다.
그럼 위 두 string을 비교하는 루틴을 찾아보자
XREF를 통해 쉽게 string에 해당하는 코드를 볼 수 있다 해당 코드로 진입하는
화살표를 따라가면 cmp , jmp 구문을 찾을 수 있을거라 예상된다.
아래 어딘가의 cmp에서 string을 비교해 incorrect로 넘길 것만 같은 코드이다.
왜냐면 cmp를 통해 correct로 jmp시킬만한 마땅한 코드가 없다.
12345678을 입력했고 getdigitItemtexta 후 bp를 걸어 입력된 값을 레지스터를 뒤져 찾아냈다
값을 입력 받고 바로 아래에 61(a)와 내가 입력한 값을 비교한다.
값이 틀리면 incorrect 루틴으로 들어가니 해당 값을 a로 바꾸고 다시 실행해보자
바로 아래에는 이런 코드가 있는데 ecx는 2345678의 주소가 들어간다.
아래의 코드가 strncmp이고 2, ecx, a5y를 push 한거보니 234가 a5y여야 한다.
다음엔 R3versing과 5678을 cmp로 비교하는데 for문을 사용해서 비교한다.
그럼 또 ㅁa5yR3versing이라는 것을 알 수 있다.
마지막으로 incorrect로 가는 루틴을 보면 이런게 있는데 hex(45)와 1을 비교한다.
1을 45에 해당하는 E로 바꾸면 CLEAR!!!
'WEB_HACKING > Reversing.kr' 카테고리의 다른 글
Reversing.kr - Easy Unpack (0) | 2020.06.13 |
---|---|
Reversing.kr - Easy Keygen (0) | 2020.06.13 |