일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 필기
- 디지털 포렌식 전문가 2급
- cve-2024-6387
- BoB 12기 최종합격 후기
- CodeEngn
- 디지털 포렌식 트랙
- Active Directory
- malware
- BoB 12기
- bob
- 정보기
- 정보보안기사
- 코드엔진
- race condition
- h4ckinggame
- Best of the Best
- 뮤텍스
- 디포전
- 세마포어
- 프로그래머스
- 리버싱
- DLL 사이드로딩
- 논문리뷰
- dll side-loading
- cve-2022-26923
- 디포전 2급
- Today
- Total
목록Wargame/기타 워게임 (9)
SEO

Message = b"\x2d\x5a\x29\x28\x34\x1e\x16\x05\x1d\x26\x17\x01\x12\x30\x01\x0a\x1c\x35\x1d\x16\x1d\x13"known_plaintext = "?????"print('-----*-----*-----*-----*-----')Mlen = len(Message)Klen = len(known_plaintext)result = ""for i in range(Mlen): result += chr(Message[i] ^ ord(known_plaintext[i%Klen]))print(result)문제 코드는 위와 같다. 변수명을 통해 알려진 평문은 이용하여 공격해보는 문제라는 것을 알 수 있다. 이 문제의 힌트는 다음과 같다.1. XOR은 A..

Serial 값이 5B134977135E7D13인 Name 을 찾는 문제이다. Name과 Serial을 입력받는 서브루틴 함수 시작 부분으로 이동하였다. 사용자의 Name 입력값을 스택에 담은 후에 그 주소를 EDI 레지스터로 옮겼다. Serial을 입력받는 서브루틴 함수로 들어가면 EAX 레지스터에 담긴 값(사용자가 입력한 Serial 값)과 ESI 레지스터에 담긴 값(사용자가 입력한 Name 값을 바탕으로 정답이 되는 Serial 값)을 비교한다.즉, ESI 레지스터에 담길 값이 5B134977135E7D13 일 때 Name이 일치한다.다시 거슬러 올라가 분석해보겠다. XOR 부분을 분석하면 다음과 같다.10이랑 Xor => 5B20이랑 Xor => 1330이랑 xor => 4910이랑 xor => ..

Serial 값을 맞추는 문제 성공 문자열을 추정되는 곳으로 이동 GetDIgUtemTextA 함수를 호출한 후에 CMP 비교를 하고 실패 메시지박스로 이동하거나 계속해서 명령어를 실행시킨다. 사용자의 둘째 입력값을 CMP 구문에서 비교한다. 사용자의 나머지 입력값이 들어있는 부분의 주소를 ECX로 옮긴다. 위 함수에서 사용자의 특정값을 비교하여 1 또는 0을 반환하는 것으로 추정 함수 안 서브루틴으로 들어가보면 사용자가 입력한 나머지 값을 EDI 레지스터로 옮김 그 값을 ESI 레지스터로 옮김 비교할 값(5y)을 ESI 레지스터로 옮김 사용자의 나머지 값을 R3versing이라는 값과 해당 for문에서 비교하는 것으로 추정 사용자가 입력한 값 중 첫째값을 가장 마지막에 계산한다.따라서 첫째값은 45이고..

정확히 어떤 암호로 암호화 되었는지는 모르지만 빈도수 분석 공격을 통해 복호화가 가능하다. https://quipqiup.com/ quipqiup - cryptoquip and cryptogram solver quipqiup.com위 사이트를 이용해 빈도수 분석 후 평문을 얻었다. key 값은 kimyuna였다.

이진수로 되어있기 때문에 텍스트로 변환해주겠다.https://www.rapidtables.org/ko/convert/number/binary-to-ascii.html 바이너리에서 텍스트로 변환기 | 바이너리 번역기바이너리-텍스트 번역기 접두사 / 접미사 / 구분 기호와 함께 이진수를 입력하고 변환 버튼을 누릅니다 (예 : 01000101 01111000 01100001 01101101 01110000 01101100 01100101) : 이진 변환기 텍스트 ► ASCII 텍스트www.rapidtables.org해당 사이트에서 변환을 진행하였다.다음과 같은 결과가 나왔고, 처음엔 시저암호라고 추측을 했다.하지만 시저암호는 정답이 될 만한 문자열이 나오지 않았고, 치환암호 사이트에 돌려보았다.http://q..

포렌식으로 분류된 문제지만 사실상 암호학 문제이다. 먼저 해당 숫자들이 모두 십진수이다. 이 상태에서는 어떠한 암호가 사용되었는지 알 수 없기 때문에 아스키 문자로 변환하였다. (문제를 풀 때는 변환 사이트를 사용했지만, 풀이를 적을 때는 공부를 위해 파이썬 코드를 작성하겠다.) 아스키 변환 코드는 다음과 같다.ten = [86, 71, 57, 107, 89, 88, 107, 103, 97, 88, 77, 103, 89, 83, 66, 110, 98, 50, 57, 107, 73, 71, 82, 104, 101, 83, 52, 103, 86, 71, 104, 108, 73, 69, 70, 49, 100, 71, 104, 76, 90, 88, 107, 103, 97, 88, 77, 103, 86, 109,..

RegisterKEY를 찾는 문제이다. EAX 레지스터에 사용자가 입력한 값과 EDX 레지스터에 하드코딩 된 값이 저장되어있고 다음 명령어가 JNZ 인 것으로 보아 해당 함수의 내부 동작은 두 값을 비교한 후 같으면 성공 문자열 부분으로 점프하고 다르면 실패 문자열 부분으로 점프한다는 것을 추측할 수 있다. 실제로 확인해보면,두 값을 비교하고 반환값에 따라 점프 여부가 달라진다. 해당 문제에 serial은 2VB6H1XS0F 였고, 이 값을 exe 파일에 입력하면,Authkey 값이 나온다.