티스토리 뷰

문제 전문

 

fleg.txt 내용

4b0e52067b3a72175f266f1a5f3a6e046f166907673843317909741b5f0c7401641d3f007d7d

 

 

문제에서도 대놓고 hex간 연산을 하라고 했으니, 일단 짝지어지는지 확인해봤다.

 

hexstring은 2자리로 한 바이트를 표현하므로, 총 38바이트 길이의 비트스트림임을 알 수 있다.

 

38면 19쌍으로 묶이니까 어떤 패턴에 의해 짝지어진 바이트끼리 1:1로 xor시키면 된다고 추론할 수 있다.

 

 

 

 

아직 정보가 별로 없기 때문에,

있는 hexstring을 보다 Readable한 형태로 출력해보았다.

 

생각보다 아스키 문자로 치환 가능한 칭구들이 많았다.

보이는 규칙성은 치환 가능 문자와 불능 문자가 교대로 나타난다는 것이다.

 

자연스럽게, 치환 불능인 코드(바이트)를 앞이나 뒤 바이트와 xor시키면 될 것 같다는 생각이 들었다.

 

게다가, 앞의 5자리가 K_R_{인 것을 통해 이 hexstring 자체가 인코딩된 플래그 형태임을 알 수 있고,

중간의 0x0E가 문자 "E" 일 것이라고 예측할 수 있었다.

(플래그 인증 형식이 KERT{...}이므로)

 

 

 

 

 

 

0x0E와 바로 앞 'K'를 xor시킨 값이 'E'임을 확인하고,

바로 해당 규칙을 적용해 익스플로잇 코드를 작성하였다.

 

hs = "4b0e52067b3a72175f266f1a5f3a6e046f166907673843317909741b5f0c7401641d3f007d7d"
bt = [int(hs[x:x+2], base=16) for x in range(0,len(hs),2)]

for i in range(len(bt)):
    if i%2: #홀수번째면(인덱스 기준)
        print(chr(bt[i-1]^bt[i]), end="")
    else:
        print(chr(bt[i]), end="")

 

 

pwned!

'WRITE-UP > 크립토스터디(KERT)' 카테고리의 다른 글

[KERT_Crypto_Study] 과제 "Did It!" 풀이  (0) 2023.10.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/12   »
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
글 보관함