본문 바로가기

CTF_Write_UP/overthewire

Overthewire : Bandit Level 9 → Level 10

 

시작

안녕하세요 :D

이번엔 Level 9 → Level 10를 풀어보도록 하겠습니다!

root@goorm:/# ssh bandit9@bandit.labs.overthewire.org -p2220

문제

The password for the next level is stored in the file data.txt in one of the few human-readable strings, beginning with several ‘=’ characters.

data.txt 파일 안에 human-readable, 사람이 읽을 수 있는 문자열로 패스워드가 저장되어 있답니다.

몇 개의 = 문자 뒤에 나온다고 하네요.

지금까지 했던 대로 cat 후에 grep 해보겠습니다.

bandit9@bandit:~$ cat data.txt | grep "===="
Binary file (standard input) matches

Binary file이기 때문에 grep 명령어가 먹히질 않습니다..

grep은 바이너리 파일을 처리할 수 없기 때문인데요.

이럴 땐 어떻게 해야 할까요??

 


 

grep -a : -a 옵션으로 인해 바이너리 파일을 텍스트파일처럼 처리할 수 있습니다.

cat data.txt | grep -a "===="
G@?>�|wٝ�c��N���̷X`��UyH%u��L/��^�5�h�M0d>uG��^�\��
�*���Ĝ"a`*��+F��OH��Xy�9��D�P�^L�Ȗ��'
                                     �l��P*���<���a�z���38zT�}4�\H�-S�|�Ҙ�      �)Šb�bz%��\\���G��-0���@��^R�l�"S��B+�D�t��
H����FB���ȭ���*�/E\N���ٔz���}�7�g`mNg H�=d����.�G����r1�J��H��Y�c��8�M.M�?]��J���:U[,���g@�b��qs*Y)�%���W̄D
                                                                                                         �h`��e�N��V%�!�+c?
Vh�r��[��-�����3�sw���W�P�      �o&9�8��T㖶�K3�`�CEhL5d(}��,����h�W��h�Ə
c4|�"�X����m���Y��GB7�ճ&�ե���p����s#�k&K��1����s��֯F�B0�2========== the�X�#��!�n�~�
Q�tR�epO�~c��|�K�$��U��D�^wo���Ӹ�`���^Q���"                                       mV�5ߖT����
                                           Sf2 ��6��r�¼�<CN��x�B�l1͑�
                                                                    ��2|���T�]Sij@)��m'T��I��ʲ<�k�%U��/UG���Y�o���+�`    O�a
X���bZ�?���LB��C9��5iu^B�����=2D=`����oD˂�n�Kh��Ȳ=}���"�vH����u9F#e1[u�>��
�C��9'����u�b}7��J��Ž-��n1p      A�?R��8�o�@�# �D�O-I�ِH�9�w�1����ߋ�      \=��/O�L�@����0���%��TE[S�h�    �T$���[<�2n�5���b�
                                                                                                                          a
%E�j8���n��a;0\�F*s�^"5 �³�=�]���L,7��3EQi�u�)'0U���u
                       l�_�az|Y+���k�B��B�8.M�9�=�k��7�1�-1T���
                                                               �U�!�w]Ov�û�
                                                                           12����J�Q���< ~k�y@g�Y&�T"u�M<��1���n��;�=QXa��.
�D#w�3�[��`4F<N���51��k�|f���a�[�iF�>{F̮~��c#p
                                             &K����ds��h���6z4����P��ƞ'���}Q�w�2�av5�=|�/
                                                                                         �W�5A���
                                                                                                 Ԩ�P�FrZ�YL�@��)2���i����gG
��˴H�+����OaT�v����)��E�M�y�k'r�yU��Tf.�6r�������G      �����}����
                                                                  �

 �tf�<��#�/������:�'[�!ǐ/;��+�M��~�B>���SJ�p���97c��c�W�w�=��      ʴt8lHX u�@�����y��'��U�����Aw�'^(�ߍ������m�)�w���P1��
     W��_H�Y�Y��ĤdX���*�4�B��� �z0e��g��S�V]�O��J Q`�*TdI�K.:}F1���'��  \Ӽ…�7P
                                                                             []���i$2w��t�Z��$��5����e��.f�O��qݡ6������-�G�
uG��)�^����@!g7��L�Ѯ�2���#Gd��; ��岬�MS��֌v�epg~���|ݞ$q�q�k�mU��hu��z��� �^����*�?�T﷿������0Q�>Q�{]��gU����7f~��e~��%��V�&�
�Ys�|��ƅ��b:�i^eE��
                   '(U�#O��TӲ����T�m����z��*�S\���g���M&T����þ========== password��Z���
                                                                                       ە�
                                                                                         �'��ϰm
DgdJ�&E�"�Z9I���2�--�0@��]<��
                             ���w�c     _<9>Ds��Qc�9�:/�|\4����`Lܔ�����Igzz����G�!�M^,�9Ų6i���//Jr��Ы�]�MF�9�:DLq��1xI���~�
qEk9s��0�ѐNT�(�tQ�P���p%?�hc�纸���Lq�����1�6���.���e�S�E�QO���ci`2�u���H�.��~@��Q�H��u��ړo��T�

                                                                                              _K�T�th��ߦ�{���%
                                                                                                              ������q��O%��
$�WI�T}�0p��ʦ�m�t�/�G2��8�
                          �F��P3c([t�' �kmx��Ê^E"�R�� TN�^6     �z�����r�Dw0���y>?+��~X����ʒ��fut�Mf��  �䳷%LˤnW�s�=$�P�:�
H��jgF5X.�T}~_Z]��9�r�4/�K
                         �93�4��n�@�JT�;���������========== isa�4>�P-+i��_��Z�0u�#��$OGuEz&.���y v�����u3 5wB���+˸�����
                                                                                                                       K�)�
��I�����-Mz�"����       ~��AG�
z"========== truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk

처리가 되었긴 했는데, 너무 더럽네요 :(

조금 더 깔끔한 방법을 찾아보겠습니다.

 


 

strings : 파일에 포함된 문자열을 출력합니다.

strings를 사용하면 파일 안에 포함된 문자열을 뽑아낼 수 있습니다.

이를 |를 통해 grep에게 넘겨준다면 = 문자열 뒤에 나오는 human-readable 텍스트만 출력되겠죠??

bandit9@bandit:~$ strings data.txt | grep "===="
2========== the
========== password
========== isa
========== truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk

bandit10으로 가는 패스워드는 truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk 였습니다!!

마무리

바이너리 파일을 옵션 없이 grep 할 수 없다는 것을 처음 알았습니다..

그걸 해결하기 위한 -a 옵션이 있다는 것도 신기하네요.

다음엔 Level 10 → Level 11에서 뵙겠습니다!! :D