일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- bob
- 사회분업론
- Best of the Best
- 코드엔진
- CodeEngn Basic 01
- BoB 12기 최종합격 후기
- BoB 12기
- 자살론
- CodeEngn
- malware
- h4ckinggame
- 에밀 뒤르켐
- 코드엔진 basic 5
- 디지털 포렌식 트랙
- 코드엔진 베이직
- codeengn basic rce 01
- 철학
- 리버싱
- CodeEngn Basic 5
- 사회적 사실
- 논문리뷰
- Today
- Total
목록IT/기타 워게임 (7)
woonadz :)
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lt3ou/btsd0RJ2oWy/eW5hEWtvgXThYKSXng8ZM1/img.png)
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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/pimh4/btrVgjxnHou/SWEAQPLtPQkKW71HhFbSnK/img.png)
정확히 어떤 암호로 암호화 되었는지는 모르지만 빈도수 분석 공격을 통해 복호화가 가능하다. https://quipqiup.com/ quipqiup - cryptoquip and cryptogram solver quipqiup.com위 사이트를 이용해 빈도수 분석 후 평문을 얻었다. key 값은 kimyuna였다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bgGsf7/btrVhTZyCJQ/kdRwGTHONNOv9v0um9zMIk/img.png)
이진수로 되어있기 때문에 텍스트로 변환해주겠다.https://www.rapidtables.org/ko/convert/number/binary-to-ascii.html 바이너리에서 텍스트로 변환기 | 바이너리 번역기바이너리-텍스트 번역기 접두사 / 접미사 / 구분 기호와 함께 이진수를 입력하고 변환 버튼을 누릅니다 (예 : 01000101 01111000 01100001 01101101 01110000 01101100 01100101) : 이진 변환기 텍스트 ► ASCII 텍스트www.rapidtables.org해당 사이트에서 변환을 진행하였다.다음과 같은 결과가 나왔고, 처음엔 시저암호라고 추측을 했다.하지만 시저암호는 정답이 될 만한 문자열이 나오지 않았고, 치환암호 사이트에 돌려보았다.http://q..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bWWA9F/btrVjnzfzbl/VXwbEX28B4AsErXCsxyKiK/img.png)
포렌식으로 분류된 문제지만 사실상 암호학 문제이다. 먼저 해당 숫자들이 모두 십진수이다. 이 상태에서는 어떠한 암호가 사용되었는지 알 수 없기 때문에 아스키 문자로 변환하였다. (문제를 풀 때는 변환 사이트를 사용했지만, 풀이를 적을 때는 공부를 위해 파이썬 코드를 작성하겠다.) 아스키 변환 코드는 다음과 같다.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,..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/prJF1/btrVcMNKgqJ/aXgP3r3Tf0U5okESWyzxMk/img.png)
RegisterKEY를 찾는 문제이다. EAX 레지스터에 사용자가 입력한 값과 EDX 레지스터에 하드코딩 된 값이 저장되어있고 다음 명령어가 JNZ 인 것으로 보아 해당 함수의 내부 동작은 두 값을 비교한 후 같으면 성공 문자열 부분으로 점프하고 다르면 실패 문자열 부분으로 점프한다는 것을 추측할 수 있다. 실제로 확인해보면,두 값을 비교하고 반환값에 따라 점프 여부가 달라진다. 해당 문제에 serial은 2VB6H1XS0F 였고, 이 값을 exe 파일에 입력하면,Authkey 값이 나온다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/U4bJn/btrVjMealVH/HmS7mGHO8POYjT8SETMzrk/img.png)
[suninatas rev 9]정답을 축하하는 메시지 박스 발견해당 주소로 이동 123을 사용자 입력값으로 입력 하드코딩 된 serial과 사용자의 입력값을 비교하는 함수로 추정된다.함수 안으로 들어가보겠다. 사용자 입력값과 913465를 비교하는 것을 확인할 수 있다. serial 을 확인했다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bxhkCu/btrVaTTEJlk/BFFTMkal9FyH2Rq74JumeK/img.png)
serial을 알아내는 문제로 추정된다. ollydbg로 해당 파일이 열리지 않아 x64dbg로 열어보았다.하지만 OK, QUIT 문자열이나 호출되는 messagebox 주소를 확인할 수 없었고, 한줄씩 실행시켜 분석하는 것도 무의미했다. exeinfo PE로 해당 파일을 열어본 결과,C#/.NET 으로 프로그래밍 된 파일이라는 것을 확인할 수 있었다.(C#이나 .NET으로 프로그래밍 된 파일은 ollydbg로 열리지 않는다.)이러한 경우에는 C#/.NET 전용 디컴파일러를 사용하는 것이 좋다.디컴파일러는 어셈블리 수준의 리버싱 공부를 하기 적합하지 않은 것 같아 최대한 x64dbg를 이용해 풀려고 했지만 힌트를 찾기 어려워 툴을 사용한다. dotpeek 이라는 디컴파일러에 위 실행파일을 넣으면 다음과 ..