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
- 모듈러 연산
- 개인정보보호
- 가명정보처리
- 개인정보안전성
- 무료교육
- package.json
- 한국산업인력공단
- 덧셈 암호
- 한국정보보호산업협회
- 백엔드
- 백엔드입문
- 웹 프레임워크
- 유클리드_알고리즘
- 한국정보보호산업협회기자단
- 곱셈 암호
- 마감임박
- Writeup
- 포너블
- 개인정보보호위원회
- 디오판투스 알고리즘
- package-lock.json
- 동적타이핑
- 호이스팅
- 국가인적자원개발컨소시엄
- 개인정보보호교육
- node.js
- 확장 유클리드 알고리즘
- arrow function
- function scope
- pwnable.tw
Archives
- Today
- Total
짱짱해커가 되고 싶은 나
[Easy Keygen] writeup 본문
파일을 실행시켜보니 이름 입력받고 시리얼을 입력받고 종료된다.
readme 텍스트에는 시리얼 번호가 5B134977135E7D13일 때의 이름을 찾으면 된다고 한다.
IDA로 분석해보자.

보니까 v9에다가 이름을 입력하고 이걸 가지고 v13에 시리얼 번호를 만들어서 저장한다.
그리고 시리얼 번호를 v9에 입력하고 이름으로 만들어진 시리얼 번호랑 같은지 확인하고 같으면 정답을 출력한다.
xor은 역연산이 같으니까 시리얼 넘버를 넣어서 하면 될 것 같다.
v6에는 16이 들어가 있다. 16 == 0x10
그리고 i=3이후부터는 i=0이 되니까 3의 배수일 때는 그냥 v6.
그러면 v6+i가 될 수 있는 값은 v6+0 v6+1 v6+2의 반복일 것으로 추측된다.
아! 노우!!! &v6!! v6+1은 v7인데 v7에는 32, v6+2의 주소는 v8 48이다.
그리고 앞부분은 그냥 입력했던 이름 한자리씩.
올리디버거로 실제 들어가는 값을 확인해보자.

이 부분이 앞서 IDA로 확인했던 시리얼 번호를 만드는 과정이다.

보니까 1씩 더하는게 아니라 10씩이다. 0x10 0x20 0x30

exploit 파일을 실행시키면 name이 출력된다~


이렇게 하나씩 확인해도 K3yg3nm3 ~
이 이름이 맞나 확인하려 했는데 파일이 너무 빨리 꺼져서 결과가 안보여서.. cmd창에서 실행시켰다 ㅋㅋ

'reversing > reversing.kr' 카테고리의 다른 글
| [replace] write up (0) | 2020.11.29 |
|---|---|
| [Music Player] write up (0) | 2020.11.22 |
| [Easy UnpackMe] write up (0) | 2020.11.14 |
Comments