일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 버퍼오버플로우
- writeup
- 어셈블리어
- HackCTF
- buffer over flow
- termux
- NewsClipping
- ftz
- CodeEngn
- 리눅스
- BOF
- webhacking
- reversing
- Nop Slide
- RITSEC CTF 2019
- 보안뉴스
- ctf
- requests
- Linux
- Hackerschool
- 웹해킹
- PWN
- Python
- SQL Injection
- 뉴스클리핑
- 리버싱
- RITSEC
- Shadow 동아리
- Next.js
- x64dbg
- Today
- Total
Jaeseo's Information Security Story
Codeengn Basic RCE 13번 문제 본문
13.exe - 정답은 무엇인가
프로그램 PE 분석을 해본다.
PE 분석을 통해 .NET assemblies로 되어 있어 일반적인 디버거로는 확인이 불가능 한 것을 볼 수가 있다.
그래서 JetBrain에서 제공하는 dotPeek를 통해 분석을 진행한다.
일단 분석을 하기 전 프로그램의 목표를 알아본다.
비번을 입력하고 입력 값이 올바른 지 체크하는 프로그램이다. 이제 dotPeek를 통해 열어서 확인한다.
그 결과 위와 같이 분석이 되는 것을 확인할 수 있다.
이때 RijndaeSimple, RijndaeSimpleTest라는 두개의 Class를 발견하게 되는데 이 두개의 클래스를 들어가 분석을 해본다.
RijndaeSimple먼저 들어가 분석을 해본다.
두가지의 함수가 발견이 되는데 Decrypt함수를 통해 복호화를 하고 Encrypt를 통해 암호화한다는 것을 알 수가 있다.
이제 RijndaeSimpleTest Class를 분석해본다.
여기에 보면 Main이 있고 암호에 필요한 인자를 String에 저장하고 인자들을 가지고 복호화 하여 str에 저장하였다는 것을 볼 수가 있다. 또한 while문을 통해 입력한 값을 str과 비교하여 체크를 하는 모습을 볼 수 있다.
RijndaeSimple에 있는 Decrpyt 함수와 RijndaeSimpleTest에 있는 인자 값을 가지고 C# 코딩을 하여 키값을 알아 낸다.
그결과 Leteminman 라는 평문이 나오는데 이것을 프로그램에 넣어 직접 테스트를 해본다.
정답: Leteminman
'Write UP > Codeengn - basic' 카테고리의 다른 글
Codeengn Basic RCE 15번 문제 (0) | 2019.12.01 |
---|---|
Codeengn Basic RCE 14번 문제 (0) | 2019.12.01 |
Codeengn Basic RCE 12번 문제 (0) | 2019.11.30 |
Codeengn Basic RCE 11번 문제 (0) | 2019.11.30 |
Codeengn Basic RCE 10번 문제 (0) | 2019.11.30 |