QR Code에 빨간색으로 낙서가 되어있어 제대로 인식하지 못하고 있습니다. 



QR code에 구조를 알아보라는 문제같습니다. 


빨간색으로 칠해져 있는 부분은 "위치 찾기 심볼" 이라고 부르며 360도 어느 방향에서든 인식할 수 있게 만들어 놓은 곳입니다.


하지만 지금 해당 구역이 오염되어 있어 정확한 값을 찾을 수 없게 되는 것입니다.


"Fix it!" 고치라고 한 내용은 해당 부분을 올바르게 만들어서 인식할 수 있게 만들라는 내용입니다.



Google에 검색해서 아무 qr코드를 가져와 "위치 찾기 심볼" 부분을 캡처하여 그림판으로 모양을 잘 잡아줍니다.


https://webqr.com/index.html 과 같은 사이트에 업로드하여 확인해 보면 됩니다.


하지만 Error가 발생하고 인식을 하지 못하게 됩니다.


빨간 부분으로 더럽혀 있어서 그런거 같으니 해당 부분도 지워줍니다.



수작업으로 하나하나 하얗게 칠하면 조금 지저분하지만 QR code를 인식하기에는 문제가 없습니다.


해당 파일로 업로드하면 올바른 인증키 값을 얻을 수 있습니다.




흔히 쓰는 QR코드가 어떻게 작동하는지 알아보게 하려는 문제였습니다.


따로 정리할 필요가 있겠네요.


[참고]

http://www.qrcode.com/ko/about/

'WarGame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS_5 [WEB]  (0) 2018.09.13
SuNiNaTaS_31 [FORENSIC]  (0) 2018.09.13
SuNiNaTaS_28 [FORENSIC]  (0) 2018.09.12
SuNiNaTaS_13 [MISC]  (0) 2018.09.11
SuNiNaTaS_11 [BINARY]  (0) 2018.09.09

쉽다고..!?



파일을 받으면 다음과 같이 확장자를 알 수 없는 파일이 하나 생기게 됩니다.



HxD로 확인해보면 앞에 시작부분이 PK인걸 보아하니 ZIP파일임을 눈치챌 수 있고 해당 파일에 확장자를 추가해줍니다.



확장자를 추가하고 열어보니 암호가 걸려있고 암호에 대한 힌트는 조금도 존재하지 않습니다....


여기서 진짜 막막했습니다 ㅜ



이 문제는 알집 Header에 관한 문제였습니다.


아래와 같이 zip파일은 다양한 파일을 하나로 모아주는 역할을 합니다.


파일마다 각각의 "Local header"가 존재하고 마지막에는 "Central directory"에 파일의 정보를 다시 작성합니다.


[출처: 위키피디아]



zip파일의 헤더 항목 중에 "General purpose bit flag"라는 항목이 있습니다. (2byte)


아래와 같은 정보를 담고 있는 값입니다. 그중 첫번째 bit는 암호 유무를 판단하는 bit 값입니다.


이 값이 설정되어 있으면 해당 zip파일은 암호화 되어 있다고 판단하게 됩니다.


        Bit 0: If set, indicates that the file is encrypted.


        (For Method 6 - Imploding)

        Bit 1: If the compression method used was type 6,

               Imploding, then this bit, if set, indicates

               an 8K sliding dictionary was used.  If clear,

               then a 4K sliding dictionary was used.


        Bit 2: If the compression method used was type 6,

               Imploding, then this bit, if set, indicates

               3 Shannon-Fano trees were used to encode the

               sliding dictionary output.  If clear, then 2

               Shannon-Fano trees were used.


        (For Methods 8 and 9 - Deflating)

        Bit 2  Bit 1

          0      0    Normal (-en) compression option was used.

          0      1    Maximum (-exx/-ex) compression option was used.

          1      0    Fast (-ef) compression option was used.

          1      1    Super Fast (-es) compression option was used.


        (For Method 14 - LZMA)

        Bit 1: If the compression method used was type 14,

               LZMA, then this bit, if set, indicates

               an end-of-stream (EOS) marker is used to

               mark the end of the compressed data stream.

               If clear, then an EOS marker is not present

               and the compressed data size must be known

               to extract.


        Note:  Bits 1 and 2 are undefined if the compression

               method is any other.


        Bit 3: If this bit is set, the fields crc-32, compressed 

               size and uncompressed size are set to zero in the 

               local header.  The correct values are put in the 

               data descriptor immediately following the compressed

               data.  (Note: PKZIP version 2.04g for DOS only 

               recognizes this bit for method 8 compression, newer 

               versions of PKZIP recognize this bit for any 

               compression method.)


        Bit 4: Reserved for use with method 8, for enhanced

               deflating. 


        Bit 5: If this bit is set, this indicates that the file is 

               compressed patched data.  (Note: Requires PKZIP 

               version 2.70 or greater)


        Bit 6: Strong encryption.  If this bit is set, you MUST

               set the version needed to extract value to at least

               50 and you MUST also set bit 0.  If AES encryption

               is used, the version needed to extract value MUST 

               be at least 51. See the section describing the Strong

               Encryption Specification for details.  Refer to the 

               section in this document entitled "Incorporating PKWARE 

               Proprietary Technology into Your Product" for more 

               information.


        Bit 7: Currently unused.


        Bit 8: Currently unused.


        Bit 9: Currently unused.


        Bit 10: Currently unused.


        Bit 11: Language encoding flag (EFS).  If this bit is set,

                the filename and comment fields for this file

                MUST be encoded using UTF-8. (see APPENDIX D)


        Bit 12: Reserved by PKWARE for enhanced compression.


        Bit 13: Set when encrypting the Central Directory to indicate 

                selected data values in the Local Header are masked to

                hide their actual values.  See the section describing 

                the Strong Encryption Specification for details.  Refer

                to the section in this document entitled "Incorporating 

                PKWARE Proprietary Technology into Your Product" for 

                more information.


        Bit 14: Reserved by PKWARE.


        Bit 15: Reserved by PKWARE. 


다음과 같이 "Local" 과 "Central directory"의 "General purpose bit flag"의 위치가 살짝 다르다는 것을 알아야 합니다.


Local Header

 Central directory file header

4Byte: Local file header signature

2Byte: Version needed to extract

2Byte: General purpose bit flag

4Byte: Local file header signature

2Byte: Version made by

2Byte: Version needed to extract

2Byte: General purpose bit flag



이것을 알고 문제로 가보면 아래와 같이 "09 08"로 되어있는 부분을 확인 할 수 있습니다.


리틀엔디안 방식을 쓰기때문에 bit값을 확인할때는 08 09 → 1000 1001 로 아셔야 합니다.


첫번째 bit가 1로 되어있어 해당 파일이 암호화 됬다고 나타나고 있습니다. 이 값을 0으로 바꾸려면


"08 08" 로 수정하시면 됩니다. 모든 "General purpose bit flag" 값을 수정해 주시면 해당 파일이 깔끔하게 열리게 됩니다.



두개의 txt파일은 "Dummy"라는 무수한 글자로 채워져 있었고, 실제 zip파일에 txt가 필요했던 겁니다.


해당 인증값으로 인증해도 안되는데 base64로 인코딩 되어있는 거 같아 decode하고 인증하면 성공하게 됩니다.



[참고]

Zip (file format): https://en.wikipedia.org/wiki/Zip_(file_format)

Zip 압축파일 헤더 구조: http://downrg.com/403

Zip파일 헤더 구조: https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT



[여담]

이 문제는 암호 자체가 없던 파일입니다.

직접 다른 암호화된 zip파일을 만들고 해당 bit값만 조작해보면 압축파일이 손상되어 있다고 나오니 주의하시기 바랍니다.

'WarGame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS_31 [FORENSIC]  (0) 2018.09.13
SuNiNaTaS_17 [MISC]  (0) 2018.09.12
SuNiNaTaS_13 [MISC]  (0) 2018.09.11
SuNiNaTaS_11 [BINARY]  (0) 2018.09.09
SuNiNaTaS_10 [BINARY]  (0) 2018.09.08

"KEY Finding"이라는 글자만 덩그러니 나와있고...


<!-- Hint : 橇肺弊贰赣狼 肋给等 家胶归诀 嚼包 -->

<!-- Hint : The programmer's bad habit of backup source codes -->


주석을 보니 프로그래머의 나쁜 습관으로 백업파일이 있다는거 같은데..


저 위에 한자는 도대체 무슨 의미인지 모르겟네요..



아무튼 문제를 푸는데 URL창을 이용하셔야 합니다.


소스코드에는 아무런 단서가 없으니 소스코드에서 무언가를 해낼 수는 없으리라 보입니다.


백업파일이라고 했으니 .swp .zip .tar .. 이런 종류의 확장자가 생각나게 됩니다.


그래서 본 URL에 다음과 같이 다양하게 시도해 보았습니다.



   http://suninatas.com/Part_one/web13/web13.asp.swp

   http://suninatas.com/Part_one/web13/web13.asp.zip

   http://suninatas.com/Part_one/web13/web13.asp.tar



하지만 페이지 오류라고 나오고 실패하게 됩니다.

그러다 아래와 같이 "asp"를 지우고 해보니까 파일이 하나 다운로드가 되었습니다!


   http://suninatas.com/Part_one/web13/web13..zip


파일에는 다음과같이 암호가 걸려있으며 압축 비밀번호는 4자리 정수라고 나와있으니 


툴이나 알집 자체 기능을 이용해서 쉽게 알아낼 수 있을 것 같습니다.


최근 버전 알집에는 제공을 하고있지는 않고 7.13 버전까지는 지원이 되는거 같습니다.


저는 그래서 알집 버전을 다운그레이드시키고 사용해봤습니다.



4자리 정수라고 했으니 다음과같이 설정하면 2초만에 결과 같이 나오게 됩니다.


다음과 같이 4개의 사진과 1개의 txt파일이 나오게 됩니다.


txt 파일 내용은 4개의 사진에서 각각 키값을 찾아 모두 합치면 된다고 합니다.



HxD 툴을 이용해서 확인해보시면 바로 눈에보이게 키값을 알려줍니다. 









[뒷말]

橇肺弊贰赣狼 肋给等 家胶归诀 嚼包 

이 한자가 무슨의미인가해서 다른 분들 블로그를 가봤는데... 인코딩 문제였던건지 한글로 잘 나와있었네요..

진짜 저거 때문에 무슨말인지 몰라서... 엄청 해맸는데 ㅜ


[참고]

알집 7.13 암호찾기: http://need-jip.tistory.com/182

'WarGame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS_17 [MISC]  (0) 2018.09.12
SuNiNaTaS_28 [FORENSIC]  (0) 2018.09.12
SuNiNaTaS_11 [BINARY]  (0) 2018.09.09
SuNiNaTaS_10 [BINARY]  (0) 2018.09.08
SuNiNaTaS_4 [WEB]  (0) 2018.09.07

Flash도 데이터를 보낼때 <form>태그의 Post방식으로 보내는거와 동일하게 데이터가 보내집니다.


현재 score는 109384이며 194175가 되어야 성공한다고 합니다.



"Brupsuite"라는 프록시 툴을 이용해서 중간해 데이터를 잡아보면 다음과 같이 score가 보내지는데


해당 값을 194175로 변경하고 보내면 해결이 되는거라 생각했습니다.. 


그러나 301 redirect가 나오면서 페이지를 옮겨다니다 실패하게 되었습니다..



그렇게 오래 지나고.. post방식으로 날라가는거 같으니 <form>태그를 만들어서 날려보면 될꺼같아 보내봤습니다,


아래와 같이 내용을 추가하고 보내보니 성공하게 됩니다.

1
2
3
4
<form method="post" action="/levels/basic+/3?submit">
    <input type="text" name="score" id="score">
    <input type="submit" value="submit">
</form>
cs



왜.. 프록시 툴로 안될까요?.. 알수가 없네요 ㅜ

'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Intermediate level4  (0) 2018.09.19
[HackThis] Basic+ level4  (0) 2018.09.03
[HackThis] Main level10  (0) 2018.08.31
[HackThis] Main level9  (0) 2018.08.31
[HackThis] Real level1  (0) 2018.08.31

binary 문제로 리버싱을 통해 해당 키값을 얻으면 됩니다.



"x86dbg" 를 사용했습니다.


앞선 문제와 같이 SuNiNaTaS는 문제를 풀었을때 "Congratulation!"이라는 문구가 나오기에 해당 문구를 검색해서 찾습니다.



[0045035A]에서 점프문으로 어떤 비교한 값이 같아야 점프가 되지않아 성공하게 됩니다.

비교하는 값은 바로 위 코드인 [00450355]에서 비교하게 됩니다.


해당 구문에 breakpoint를 걸어놓고 임의의 값을 입력해 실행해 봅니다.



"1234"라는 값을 입력해서 진행해보니 바로 눈에 띄게 알맞은 값과 키값이 보이게 됩니다..


확실하게 하기위해 해당 함수안으로 진입해봅니다.



함수안에서 보시면 입력한 값인 "1234"와 edx에 들어있는 값을 비교하는 구문이 보입니다.

[0040460F]에서 비교를 하여 같으면 [004046A6]으로 점프하여 함수를 벗어나게 됩니다.


edx에 입력되어있는 값을 프로그램에 입력해보면 "Congratulation"이라는 창으로 인증 키값이 나오게 됩니다.



'WarGame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS_28 [FORENSIC]  (0) 2018.09.12
SuNiNaTaS_13 [MISC]  (0) 2018.09.11
SuNiNaTaS_10 [BINARY]  (0) 2018.09.08
SuNiNaTaS_4 [WEB]  (0) 2018.09.07
SuNiNaTaS_9 [BINARY]  (0) 2018.09.07

Binary 문제입니다.

파일을 다운로드 받으면 간단한 프로그램이 하나 나오게 됩니다.


"OK" 버튼을 누르면 "Try again!" 이라는 메시지가 나오게 됩니다.

무슨 값을 입력해도 나오게 됩니다. 적당한 값을 찾아야 할 것으로 보입니다.


이번에는 IDA 라는 디버깅 툴로 문제를 풀어봤습니다.


처음에 EXE 파일이기에 "MS-DOS executable (EXE)"로 파일을 열어봤는데 packing 되어있다고 합니다...

그래서 제대로 된 디버깅을 할 수 없었습니다.


그러던 중 다른 type으로 열어볼까 해봐서 "Microsoft.Net assembly"로 파일을 열어봤습니다.



Packing이 되어있어서 제대로 확인할 수는 없었지만 다음과 같이 인증 키값이 보입니다.

해당 인증키로 프로그램에 어떤 역할을 하진 않았지만 문제 인증에는 성공했습니다.



아직 디버깅에 익숙하지도 않고 특히 IDA에 더더욱 익숙하지 않아.. 제대로된 설명을 못해드립니다 ㅜ



[풀이 이후]


문제의 인증키의 내용중에  "peid"라는 말이 있었습니다.


peid는 바이너리 분석 툴로서 프로그램이 어떤 언어로 제작되어있는지 패킹은 어떤 방식으로 했는지


리버싱 전에 사전에 확인할 수 있는 툴이라고 합니다.


해당 프로그램을 peid로 열어보면 c#으로 만들어져 있다고 나와있습니다.


"microsoft visual c# / basic .net decompiler" 라고 구글에 검색을 해보시면 dotpeek라는 프로그램이 나옵니다.

해당 프로그램을 다운로드 받고 파일을 열어보면 c#코드가 깔끔하게 보이게 됩니다.



해당문제의 요점은 디버깅을 시작하기전에 peid로 어떤 언어로 만들어졌는지 확인하고 


그 언어에 맞는 디버깅을 해보라는 내용 같습니다..



'WarGame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS_13 [MISC]  (0) 2018.09.11
SuNiNaTaS_11 [BINARY]  (0) 2018.09.09
SuNiNaTaS_4 [WEB]  (0) 2018.09.07
SuNiNaTaS_9 [BINARY]  (0) 2018.09.07
SuNiNaTaS_7 [WEB]  (0) 2018.09.07

문제를 보면 "Point", "User-Agent", "Auth Key"가 있습니다.


우선 눈에 보이는 "Plus" 버튼을 계속 누르면 숫자가 하나씩 증가합니다.


그러다가 25가되면 alert창이 뜨면서 더이상 증가하지 않습니다.



좀더 정보를 얻기 위해 소스보기를 하시면 주석으로 <!-- Hint : Make your point to 50 & 'SuNiNaTaS' --> 가 있습니다.


50 Point를 만들라는 것은 알겠는데 'SuNiNaTaS'는 왜 있는걸까요..?


프록시 툴로 포인트를 강제로 50으로 바꿔봐도 제대로 수행되지 않아서 막혀있었습니다.


근데 뜬금없이 "User-Agent"를 왜 보여주는 걸까요?? 분명 이것도 이유가 있어서 보여주는 것일 껍니다.


현재 "User-Agent"는 사용자의 브라우져에 따라 값이 다르게 됩니다. 이 값을 힌트에 나와있는 'SuNiNaTaS'로 바꾸면 될듯합니다.




"User-Agent'를 바꾸는데는 다양한 방법이 있을테지만 저는 Chrome에서 있는 기능을 사용하려고 합니다.


크롬 확장프로그램에 User-Agent Switcher for Chrome 이라는 확장 프로그램이 있습니다.


이 프로그램은 "User-Agent"값을 조작해서 다양한 브라우져를 사용하는 것 같은 효과를 줍니다.


"설정" 탭에서 추가로 "SuNiNaTaS"라는 값을 만들어 사용해 봅니다.



다음과 같이 값이 "SuNiNaTaS"로 변한게 보이실 겁니다.


이제 "Plus" 버튼을 누르면 alert창이 뜨지않고 값이 오르게됩니다.



그렇게 50까지 Point가 오르게 되면 다음과 같이 인증키 값이 나오게 됩니다.



'WarGame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS_11 [BINARY]  (0) 2018.09.09
SuNiNaTaS_10 [BINARY]  (0) 2018.09.08
SuNiNaTaS_9 [BINARY]  (0) 2018.09.07
SuNiNaTaS_7 [WEB]  (0) 2018.09.07
SuNiNaTaS_21 [FORENSIC]  (0) 2018.09.06

제가 리버싱은 잘 못해서 해석이 매끄럽지 못합니다...


저는 x86dbg를 사용했습니다. Ollydbg랑 매우 유사합니다.


해당 파일을 다운로드 받으시면 간단한 프로그램이 하나 나오게 됩니다.



"Click!"버튼을 눌러도 아무런 응답이 없습니다.


어쨌든 알맞은 값을 입력해야 해결이 될꺼라 생각합니다.



우선 모든 문제를 풀었을때 "Congratulation!"이라는 문구와 함께 해결된 것을 알기에


문자열 찾기를 통해서 다음 문자열을 찾을 수 있었습니다.



문자열을 찾으셨으면 우클릭으로 해당 어셈코드로 이동해서 분석을 시작하면 될 것 같습니다.



사실 지금 눈으로 봐도 답이 보이긴 합니다.. ^^


분석을 시작해보면 "Congratulation!"이라는 문자열이 나오게 하려면


[0045033D] 부분에 jne 를 통과해야 합니다. ( jne 비교하는 문자열이 같지 않으면 점프 )

입력한 값과 프로그램 내부에서 설정된 값이 동일해야 이 jne 문을 통과해 답이 해결되는 것 같습니다.



임의의 문자열 "1234"를 입력하고 진행해 보겠습니다.


[0045032A] 부분의 함수안에서는 사용자가 입력한 값을 불러오는 역할을 수행했습니다.



실질적으로 비교하는 함수는 [00450338] 에서 수행하므로 함수 내부로 진입해봅니다. ( F7은 내부로 이동, F8은 함수 내부x )



내부로 들어가 보시면 eax에는 입력한 값 "1234"가 들어있고 edx에는 프로그램에서 설정한 값인 "913465"가 있습니다.

이 두값을 비교해 같으면 [004046A]로 점프하여 진행되고 값이 같으니 함수밖을 나가서 점프문이 실행되지 않고 넘어가게 됩니다.



해당 키 값을 인증 페이지에서 인증하시면 됩니다.


간단한 리버싱 문제였습니다... 아직 리버싱에 익숙하지 않아서 매끄럽지 못하네요 ㅜ.

'WarGame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS_10 [BINARY]  (0) 2018.09.08
SuNiNaTaS_4 [WEB]  (0) 2018.09.07
SuNiNaTaS_7 [WEB]  (0) 2018.09.07
SuNiNaTaS_21 [FORENSIC]  (0) 2018.09.06
SuNiNaTaS_15 [FORENSIC]  (0) 2018.09.06

아이유 사진이 나와있습니다.


쭉 내리다보면 "Yes" 버튼이 있고 마지막에는 윤아 사진이 있습니다.


"Yes" 버튼을 눌러보면 너무 느리다는 alert창과 함께 실패하게 됩니다.


소스코드에 주석을 확인해 보시면 <!-- Hint : Faster and Faster --> 라고 되어있습니다.


"Yes"버튼을 빨리 누르라는 의미겠죠?




javascript로 다음과 같이 입력하면 버튼을 누를 수 있게 됩니다.


하지만 "submit"이 정의되지 않았다는 메시지와 함께 Error가 발생합니다.


구글에 검색해보시면 페이지가 전부 로드되기전에 찾으려고 하니깐 Error가 발생한다고 합니다.

(이것때문에 고생...많이했는데 ㅜㅜ)



그래서 Python으로 코드를 작성하고자 합니다.

Python에는 requests라는 모듈이 있는데 Post/Get 방식으로 데이터를 전송할 때 편리합니다.


"Yes" 버튼을 누르게 되면 "Do U Like girls?" 이라는 메시지가 post 방식으로 보내지게 됩니다. 해당 URL로 보내집니다.

그렇기 때문에 보낼 data도 함께 작성해줍니다.


1
2
3
4
5
6
7
import requests
 
cookies = {'YourCookie':'YourCookieValue'}
data = { 'web07':'Do U Like girls?'}
 
res = requests.post('http://suninatas.com/Part_one/web07/web07_1.asp', data=data, cookies=cookies)
print(res.text)
cs


이렇게 작성해주고 실행을 시키면 다음과 같은 결과가 나오게 됩니다.

실패를 했는데 이유가 무엇일까요...



먼저 우리가 풀려고하는 문제 페이지를 띄워야 되는 것을 알게 되었습니다. (약간의 힌트..)

그래서 get방식을 이용해서 해당 페이지를 먼저 로드한 이후 보냈더니 성공하게 되었습니다.


1
2
3
4
5
6
7
8
import requests
 
cookies = {'ASPSESSIONIDAQDTQQDT':'DHIJMHABAEOGDAOKHEIKGLCP'}
data = { 'web07':'Do U Like girls?'}
 
requests.get('http://suninatas.com/Part_one/web07/web07.asp', cookies=cookies)
res = requests.post('http://suninatas.com/Part_one/web07/web07_1.asp', data=data, cookies=cookies)
print(res.text)
cs





[성공 후]


다른 사람들은 어떻게 풀었나 봤더니.. javascript도 충분히 풀수 있었더군요.

개발자도구에서 Console창에 다음과 같이 입력하면 풀이가 되었습니다.


location.href로 먼저 페이지를 로드하고 이후에 빠르게 document.frm.submit()을 해주면 풀이가 되었습니다.


어떤사람은 document.frm.submit()만 해도 Error 없이 성공 했던데... 이유가 무엇일까요?


1
2
location.href='http://suninatas.com/Part_one/web07/web07.asp'
document.frm.submit()
cs


'WarGame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS_4 [WEB]  (0) 2018.09.07
SuNiNaTaS_9 [BINARY]  (0) 2018.09.07
SuNiNaTaS_21 [FORENSIC]  (0) 2018.09.06
SuNiNaTaS_15 [FORENSIC]  (0) 2018.09.06
SuNiNaTaS_3 [WEB]  (0) 2018.09.06

사진 속을 잘 들여다보면 인증 키 값이 살짝살짝 보입니다.


하지만 자에 있는 글씨 덕분에 보이지 않습니다.


어떻게서든 파일속에서 키값을 찾으면 되리라 판단됩니다.



사진을 다운로드 받고 HxD로 열어보고 찾아보겠습니다.


맨 마지막까지 봐도 특별한건 보이지 않습니다.


한가지 이상한건 jpeg의 파일 시그니처인 FF D8이라는 문자열이 상당히 많이 보였으며


형식도 반복된 것을 알게 되었습니다.




아래와 같이 FF D8 이 보이며 이 파일 속에 몇가지 사진이 더 숨겨져 있다고 생각되어


해당 부분부터 맨 밑까지 복사하여 새로운 파일을 만들어 냅니다. (monitor2.jpg)





아래 사진은 맨 밑쪽에 값들로 새로 만든 파일입니다.


처음에 보던 사진이랑 자의 위치가 다르고 안보였던 몇몇 부분이 명확하게 보이게 됩니다.


[monitor2.jpg]



"monitor2.jpg" 를 제외한 파일에서 새로 "FF D8'를 찾아 해당 값으로 새로운 파일을 만들면


다음과 같이 자의 위치가 조금 틀리게 되며 안보였던 맨 앞부분 키값을 얻을 수 있게 됩니다.


[monitor3.jpg]



이 문제처럼 사진이 한개뿐이여도 그안에 여러 사진이 존재할 수 있으며 파일이나 문자열을 사진 속에 숨길 수 있습니다.


물론 파일 같은 경우에는 용량이 크다면 만들어진 사진 용량이 그만큼 커져 의심을 받게 되지만


약간의 문자열 정도는 티가 안나기 때문에 잘 숨긴다면 충분히 감출 수 있게됩니다.


이것을 "스테가노그래피"라고 부릅니다.




[뒷말]


"스테가노그래피"에는 다양한 방법이 있는데 그중에서 사진은 RGB라는 값으로 이루어져 있는데 


그중 LSB(Least Significant Bit)를 이용해서 숨기는 방법이 있습니다. 


RGB값의 마지막 bit값을 이용해서 숨기는 방법인데 마지막 bit값이 변하더라도 눈으로 보기에는 큰 차이를 느낄 수 없어 이용하는 방법입니다.


문자열이나 파일을 2진화 시켜서 LSB마지막 bit에 정해진 위치에 넣게되면 숨겨지게 됩니다.


그밖에 여러가지 방법이 존재하므로 한번쯤 만들어봐도 재밌을꺼 같습니다^^


(한번 해봤는데 재밌었습니다^_^)

'WarGame > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS_9 [BINARY]  (0) 2018.09.07
SuNiNaTaS_7 [WEB]  (0) 2018.09.07
SuNiNaTaS_15 [FORENSIC]  (0) 2018.09.06
SuNiNaTaS_3 [WEB]  (0) 2018.09.06
SuNiNaTaS_19 [FORENSIC]  (0) 2018.08.23

+ Recent posts