ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [L.O.S] Level 19 - xavis
    Wargame/L.O.S 2022. 12. 7. 04:57
    반응형

    Level 19 - xavis를 풀어보자.

    어려운 문제인 것도 맞는 것 같고, 생각의 유연함이 필요한 문제인 것도 맞는 것 같다.

     

    문제의 코드를 보면 필터링은 regex와 like를 하고 있다.

    regex가 뭔지는 잘 모르겠지만, 넘어가도 될 것 같다.

    얼핏 보기에 필터링되는 것도 별로 없고, 제한 사항이 없어 쉬운 문제인 것 같다.

    <xavis의 php 코드 내용>

     

    pw의 길이를 알아보기 위해 입력을 했더니, 이전의 Level들 보다는 길다는 것을 알 수 있다.

    파이썬 코드를 이용해 정확한 pw의 길이를 알아보니 12가 나왔다.

    <pw의 길이를 알기 위한 파이썬 코드>

     

    이제 admin의 pw를 알아보기 위해 코드를 작성해 실행하면 문제가 풀릴텐데, 수월한 문제이다.

    하지만, 코드를 실행시키고 기다려봐도 결과가 출력되지 않는다.

    무엇이 문제일까??

    <pw의 값을 알기 위한 파이썬 코드>

     

    생각을 조금 해보면 파이썬 코드에서 지정한 범위인 ascii 코드에서는 답이 나오지 않는다는 것을 알 수 있다.

    그렇다면 이보다 더 큰 유니코드를 생각해보면 어떨까??

    그리고 그것이 맞다면 이번 답은 기존의 pw였던 영어와 숫자가 아닐 것이다.

     

    이 생각이 맞다는 것을 확인하기 위해 pw의 각 글자의 길이를 알아보도록 하자.

    아래의 사진을 보면, pw의 첫 번째 글자의 길이가 4일 때 참이라는 것을 알 수 있다.

    그리고 두 번째, 세 번째 글자의 길이도 같고, 네 번째부터는 Hello guest가 출력된다.

     

    정확히 어떤 문자인지는 모르겠지만, 영어와 숫자가 아니라는 가정은 맞았다.

    <pw의 각 글자의 길이>

     

    다시 한 번 pw의 길이를 구해보도록 하자.

    16진수로 pw를 나타내고 그것의 길이를 구하도록 파이썬 코드를 작성해 실행하였다.

    그 결과 pw의 길이가 24라는 것을 알게 되었다.

    <16진수로 표현한 pw의 길이>

     

    16진수로 표현한 pw의 길이를 구했으니, 이제 그 값을 구해보도록 하자.

    아래의 사진처럼 코드를 작성해 실행하면 pw의 값이 출력된다. (코드를 작성하는데 오래 걸렸다..)

    <pw의 값>

     

    24개의 길이인데, 3개의 글자라는 것을 알고 있으니 8개씩 나누어 chr 함수를 이용해 출력한다.

    그랬더니 '우왕굳'이라는 한글 문자가 출력되었다.

    pw에 우왕굳을 입력했더니 XAVIS Clear!가 출력되며 문제가 해결되었다.

    <xavis 문제 완료>

     

    추가하자면, 한글은 UTF-8에서 한 글자당 3 바이트로 표현이 가능하다.

    여기서 한 글자의 길이가 4 바이트인 것은 UTF-8은 1 ~ 4의 가변 크기로 인코딩하기 때문이다.

    (UTF-32는 한 글자당 4 바이트로 고정)

    사실 여기서 쓰이는 인코딩 방식이 유니코드인 것은 맞는 것 같은데 정확히 무엇인지를 모른다.

    Web Proxy를 이용해 헤더의 Content-Type을 확인하면 되지만, 그건 생략하도록 하자.

    반응형

    'Wargame > L.O.S' 카테고리의 다른 글

    [L.O.S] Level 21 - iron_golem  (1) 2022.12.09
    [L.O.S] Level 20 - dragon  (0) 2022.12.08
    [L.O.S] Level 18 - nightmare  (0) 2022.12.06
    [L.O.S] Level 17 - zombie_assassin  (0) 2022.12.05
    [L.O.S] Level 16 - succubus  (0) 2022.12.05

    댓글

Designed by Tistory.