ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [L.O.S] Level 31 - zombie
    Wargame/L.O.S 2023. 1. 4. 04:44
    반응형

    Level 31 - zombie를 풀어보자.

    앞의 문제와 비슷하지만, 좀 더 쉽게 풀 수 있었다.

     

    이번 문제도 pw를 입력하면서 입력한 쿼리를 불러와야 한다.

    그런데 'ace' 문자가 필터링되고 있다.

    즉, 앞의 문제를 풀 때 이용하였던 place 함수를 사용하지 못한다.

    <zombie의 php 소스 코드>

     

    소스 코드를 보면 알지만, 그래도 앞의 문제와 같은 유형인지 확인하기 위해 union select를 입력하였다.

    예상했던 결과가 나오는 것을 볼 수 있다.

    이 문제는 어떻게 풀 수 있을까??

    <union select의 결과>

     

    sql의 다양한 정보를 모아둔 DB인 information_schema에서 processlist를 이용하여 문제를 풀어보자.

    이 processlist는 테이블을 조회하여 현재 수행 중인 작업을 볼 수 있는 테이블이다.

     

    쉬운 이해를 위해 조회를 실행해보도록 하자.

    아래의 사진을 보면 substr로 지정한 column의 데이터를 원하는 길이만큼 조회할 수 있다.

    information_schema.processlist에서 info column에 수행 중인 작업의 정보가 저장된다.

    그 결과로 입력한 쿼리가 그대로 출력이 되는 것을 볼 수 있다.

    <information_schema.processlist 입력>

     

    이제 해야 할 것은 pw에 입력한만큼 result에서 조회를 해야 한다.

    즉 앞의 select ~ pw=' 까지는 원래 쿼리문에 있는 것이기 때문에 그것을 제외하고 조회를 해야 한다.

     

    substr에서 info column을 조회하는데, 시작을 pw=' 이후의 인덱스인 38로 지정해준다.

    그리고 마지막을 #으로 지정하기 위해 인덱스 71을 지정해주었다.

     

    그 결과, ZOMBIE Clear!가 출력되며 문제가 해결되었다.

    <zombie 문제 완료>

    반응형

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

    [L.O.S] Level 30 - ouroboros  (1) 2023.01.02
    [L.O.S] Level 29 - phantom  (0) 2023.01.01
    [L.O.S] Level 28 - frankenstein  (0) 2022.12.31
    [L.O.S] Level 27 - blue_dragon  (0) 2022.12.30
    [L.O.S] Level 26 - red_dragon  (0) 2022.12.28

    댓글

Designed by Tistory.