WARGAME 52

[CryptoHack] XOR Properties

XOR의 4가지 특징 Commutative(교환법칙): A ⊕ B = B ⊕ A Associative(결합법칙): A ⊕ (B ⊕ C) = (A ⊕ B) ⊕ C Identity: A ⊕ 0 = A Self-Inverse: A ⊕ A = 0 교환법칙(Commutative): XOR 연산은 순서에 관계없이 같은 결과를 얻음 결합법칙(Associative): XOR 연산은 연속된 여러 항목을 괄호의 위치에 관계없이 결합할 수 있음 XOR 연산의 항등원은 0 자기 자신과 XOR 되면 0 퀴즈) 풀이) 헥스값을 먼저 바이트로 변환하고 계산해야함!! 처음에 이렇게 풀었더니 다음과 같은 오류가 발생함.. 보니까 바이트배열끼리의 XOR 연산은 지원되지 않는것 같음! 따라서 하나하나 다 정수형으로 변환해줘야하는 것 같다..

[CryptoHack] XOR Starter

XOR 표현식 = ^ 2진수 예시) 0110 ^ 1010 = 1100 10진수를 XOR 하기 위해서는 2진수로 바꿔야한다. 문자를 XOR 하기 위해서는 각 문자를 유니코드로 바꾸고 다시 2진수로 바꿔서 계산해야함. quiz) Given the string label, XOR each character with the integer 13. Convert these integers back to a string and submit the flag as crypto{new_string}. 풀이) pwntools 라이브러리의 xor() 사용해서 쉽게 풀 수 잇음. 1. pwntools xor() 사용 하는 방법 2. 직접 xor 하는 경우

[코드엔진/CodeEngn] Basic RCE L13

실행파일을 열기전... 정적 분석을 하기 위해 IDA 로 돌려봤는데 오류뜨고 화면이 안 뜨네요... 일단 exeinfo로 열어서 파일을 살펴보겠습니당 언어가 C#으로 되어있고 .Net으로 되어있는것으로 보아 ILSpy로 볼 수 있을 것 같습니다 ^^ 우선 실행을 먼저 해보겠습니다 패스워드를 찾으면 되는 문제네용 ILSpy로 돌려봤습니다 ILSpy의 맛은 또 직접 실행할 수 있는거 아닐까요? 코드 저장하고 수정해봅시다 여기서 plainText를 암호화하여 생성하는 것을 볼 수 있고 우리가 입력한 값이 plainText와 같은지를 보고 있으므로 그냥 plainText를 프린트하면 될 것 같네요... 중간에 써주고 실행하면 나오네요 ㅎㅎㅎㅎㅎ

WARGAME/reversing 2023.11.13

[코드엔진/CodeEngn] Basic RCE L19

실행파일을 실행해보면 위와 같이 뜹니다. 그리고 시간이 좀 지나고 꺼지는 걸 알 수 있습니다. exeinfo로 분석한 모습입니다. upx 패킹이 되어있음을 볼 수 있으니 upx 언패킹을 합니다! 이제 분석을 해보려고 x32dbg로 분석을 하려는데 실행을 해보면 다음과 같이 제대로 창이 안뜨고 에러메세지가 뜹니다 우선 이 에러에서 AutoIt가 뭔지 찾아봤는데 AutoIt v.3.2.5.1 이하 버전들은 공식 디컴파일러가 디컴파일을 할 수 있다고 나와있는데 이 실행파일은 exeinfo에서 3.3 버전이라고 했으므로... ㅜㅜ 디컴파일러는 없고 그냥 분석에서 찾아야 할 것 같습니다 여기서 디버거를 탐지하는 함수를 찾아봤습니다 맨 위에 있는 거 더블클릭해서 들어가서 그래프로 보기 눌렀더니 아래와 같이!! 이렇..

WARGAME/reversing 2023.11.13

[dreamhack] SingleByteXor

문제를 다운 받아보면 저 문자열 "54586b6458754f7b215c7c75424f21634f744275517d6d" 이 들어있는 파일만 존재합니다. 어쨌든 이 문자열은 암호화된 문자열인데, 문제 제목에서 볼 수 있듯이 Single byte XOR을 썼다는 것을 유추할 수 있습니다. Single byte XOR은 하나의 바이트(아스키코드로 생각하면 0~255)로 전체 문자열을 XOR 한 것으로 이해했습니다. XOR의 성질 중 하나는 a ^ b = c 일때 c ^ b = a 라는 특성이 있기 때문에 문자열을 알 필요 없이 single byte만 bruteforce로 알아내서 xor을 하면 문자열을 찾아낼 수 있습니다! 따라서 이를 찾는 파이썬 코드는 다음과 같습니다. def xor_byte(data, b..

[dreamhack] ICM2022

문제를 다운 받으면 다음과 같이 두개의 파일이 있는데 이때 readme.txt 를 먼저 읽어줄게여 뭔가 변수값들을 주고 있는것 같으니 main.py 파일을 한번 살펴보겠습니다 import random from fractions import Fraction def enc(p, n, key1, key2): q = (Fraction(p, n+1)*key1**(n+1)) - (Fraction(p, n+1)*key2**(n+1)) print("[OK] plain is encrypted : ", q) return q def dec(q): # cencored def key_make(): n, key1, key2 = 0, 1, 0 while key2 < key1: n = random.randrange(1, 10) ke..

[리버싱 자체제작] wpf(C#) 이용

c#언어로 wpf 애플리케이션을 만들어보았습니다 [문제 설명] 플래그 버튼을 눌러 "Success!" 를 띄워보자 [문제의 의도] 코드/어셈블리 패치를 통한 admin 계정 탈취 문제 풀이 실행시 다음과 같은 화면이 나타납니다. 여기서 어드민을 체크해볼까요? 어드민이 아니라면서 체크도 해제되고 아예 체크박스가 막혀버렸네요. 그럼 이 상태에서 Get Flag 버튼을 한번 눌러봅시다 어드민이 아니라면서 막네요. 그럼 다시 실행시키고 이번에는 아무것도 안 누른 상태로 플래그 버튼을 눌러보겠습니다. 동일하게 경고문이 뜨는군요 :) 그러면 이제 분석을 해봅시다. 분석에 앞서, C# 같은 경우에는 분석을 할때 대중적으로 많이 쓰는 xdbg나 ida 를 써도 잘 안보입니다! C#의 특성 때문이지요... 따라서 C# ..

WARGAME/made by me! 2023.10.30