CTF/HackCTF

[Forensic] Let'S get it ! Boo*4

Ron Weasley 2022. 3. 30. 13:50

HackCTF의 마지막 문제입니다.

문제에 적혀 있듯이 LSB관련된 문제임을 바로 알았습니다.

 

LSB에 대해서 간략하게 설명 하겠습니다.

 

LSB는 Least Significant Bit의 약자로써 하나의 데이터 형에서 가장 낮은 위치의 Bit를 의미합니다. 반대로 하나의 데이터 형에서 가장 높은 위치의 Bit는 MSB라고 합니다. 그림을 통해서 쉽게 알아 보겠습니다.

unsigned char LSB, MSB Layout

일단 LSB의 위치는 가장 값이 작은 비트인 2^0에 위치하고 있는 것을 알 수 있습니다. 이 LSB의 값을 이용하여 해당 데이터 형에 들어있는 실제 숫자가 짝수인지 홀수인지 손쉽게 알아낼 수 있습니다.

 

LSB는 프로그래밍 시 주로 난수발생 함수, 해시 함수, 검사합(Checksum) 함수 등에서 많이 쓰이고 있습니다. 왜냐하면 LSB는 값이 조금이라도 변경된다면, 데이터 형의 최하위 비트이므로 그 값이 거의 100% 변화가 발생하기 때문입니다.

 

이제는 문제로 돌아가서 LSB와 연관되어 있다는 것을 알았으니, zsteg를 써서 풀어보겠습니다.

zsteg 설치 방법
gem install zsteg

먼저, 다음과 같은 명령어로 zsteg를 설치합니다.

 

설치를 했으면, 이제 풀어 보겠습니다.

zsteg <파일명>

확실히 zsteg를 사용하여 푸는게 맞다고 느꼈습니다.

그래서 구글링을 통해 옵션을 추가 보았습니다.

zsteg <파일명> b1, lsb, bY -v

앞에 b1, lsb, bY는 여기서 따온겁니당.

그리고 -v옵션은 상세하게 보여달라는 옵션입니다. 

확인을 해보니 HackCTF{OU].B10C0xCDA90xBD840xD7880d.8AC000H.8CE580xC7880xB2940xC8740xC7AC0v.8C57C}

 

그래서 변환을 시켜보니 다음과 같았습니다.

FLAG : HackCTF{넌충분히가치있는존재야}

'CTF > HackCTF' 카테고리의 다른 글

[Forensic] 잔상  (0) 2022.03.30
[Forensic] Terrorist  (0) 2022.03.30
[Forensic] Magic PNG  (0) 2022.03.30
[Forensic] 나는 해귀다  (0) 2022.03.29
[Forensic] 세상에서 잊혀진 날 찾아줘  (0) 2022.03.29