본문 바로가기

computer forensics

네트워크 포렌식 문제

728x90


스니핑을 통해 패킷을 얻었다 flag를 찾아보아라 

frame contains flag 필터를건후 아래 패킷을 살펴 본다 


위에 필터링이 이루진 것을 살펴 보니 

base64 형태이고 base64 encode/decode 형태로 이루어진 python 형태의 소스코드를 살펴 볼수 있다. 소스코드를 더 상세히 살펴 보기 위해서 sublime text에서 살펴 보자 


base64 인코딩, caesar 암호 및 ROT13 기능 - 우리는 세 가지 다른 암호화 / 인코딩 루틴을 사용할 수 있다는 것을 참조

우리가 입력을 인코딩하고 "2"를 앞에 추가 64 기수로 시작 것 같습니다. (기본값은 50) 지정된 후, 여러 번, 우리는 랜덤 함수를 선택하고 현재의 입력에서 실행합니다.

우리의 반전에 중요한 줄은 TMP이다 = '{} {}'. 형식 (I, _tmp).base64로 인코딩 기능의 인덱스 + 1은 2, 그리고 정확하게 우리가 base64로 그것을 인코딩하기 전에 초기 입력에 붙일 무엇으로이 행은, enc_ciphers + 1이 의미가있는 함수의 인덱스 선택 기능의 출력을 앞에 추가합니다.

So, in a nutshell here are the corresponding keys:

  • 1 – rot13
  • 2 – base64 encode
  • 3 – caesar cipher

우리는 우리의 함수의 역을 작성하여 시작해야합니다. ROT13은 자신의 역이며, 시저 암호에 대해 우리는 단지 -3 = 이동하려면 Shift = 3을 변경할 수 있습니다. 그런 다음, 우리는 다음과 같은 base64로 디코딩 기능을 추가해야합니다

디코더의 메인을 살펴 보자 


이 소스를 실행시켜 출력한 결과 값을 얻는다


There’s the flag! flag{li0ns_and_tig3rs_4nd_b34rs_0h_mi}

이 결과 같을 얻으면 성공 ^^

728x90