ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [L.O.S] Level 24 - evil_wizard
    Wargame/L.O.S 2022. 12. 17. 19:15
    반응형

    Level 24 - evil_wizard를 풀어보자.

     

    코드를 보면 앞의 Level인 hell_fire와 비슷하다.

    다른 점은 union, sleep, benchmark 함수를 사용할 수 없다.

    <evil_wizard의 php 코드 내용>

     

    앞에서 했던 Time-Based SQL Injection은 할 수 없지만, if 문을 이용해 문제를 풀어보도록 하자.

     

    먼저 email의 길이를 구해보자.

    order by가 정렬될 수 있도록 참일 때, 1을 입력할 수 있도록 한다.

    그랬더니 admin, rubiya 순으로 데이터가 정렬되는 것을 볼 수 있다.

    <참일 때의 정렬>

     

    다음으로 에러가 나오도록 거짓일 때의 값을 order by의 범위를 넘어가도록 설정하였다.

    그런데, 출력이 된다..

    rubiya, admin 순으로 앞과는 다른 결과지만, 분명 출력이 되고 있다.

     

    혹시나 싶어 거짓일 때 0을 넣을 수 있도록 입력했지만, 출력이 되는 것을 확인할 수 있다.

    심지어 0을 넣었을 때는 참 값일 때와 거짓일 때가 똑같이 출력이 된다..

     

    왜 이런 건지는 잘 모르겠지만, 정렬의 순서가 바뀐다는 사실을 이용해 문제를 풀도록 하자.

    <이상한 결과>

     

    길이를 구하는 코드를 작성하여 실행하였더니, email의 길이 값이 30이 나왔다.

    (admin이 나오는 위치에 따라 페이지에 출력되는 테이블 태그가 다른 점을 이용했다.)

    <email의 길이 코드>

     

    이제 email의 값을 구하는 코드를 작성해보자.

    아래와 같이 코드를 작성해 3의 길이마다 출력이 되도록 하였다.

    이 코드를 실행시켜 email의 값이 나오는 것을 확인할 수 있다.

    <email의 값>

     

    페이지로 돌아와 코드를 통해 구한 email의 값을 입력하면 EVIL_WIZARD Clear!가 출력된다.

    문제는 해결되었지만, 의문이 남아 조금 찜찜한 느낌이 있다.

    <evil_wizard 문제 완료>

    반응형

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

    [L.O.S] Level 26 - red_dragon  (0) 2022.12.28
    [L.O.S] Level 25 - green_dragon  (1) 2022.12.27
    Level 23 - hell_fire  (0) 2022.12.14
    [L.O.S] Level 22 - dark_eyes  (1) 2022.12.12
    [L.O.S] Level 21 - iron_golem  (1) 2022.12.09

    댓글

Designed by Tistory.