-
[L.O.S] Level 31 - zombieWargame/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