-
[L.O.S] Level 13 - bugbearWargame/L.O.S 2022. 12. 4. 03:59반응형
Level 13 - bugbear를 풀어보자.
이번 문제는 darkknight에서 or, and, 공백, like, 0x까지 더 많은 필터링이 추가되었다.
어떻게 해결을 할 지 생각을 잘 하면서 문제를 풀어보자.

<bugbear의 php 코드 내용> 우선 참 값을 만들어 입력을 해야 하는데 '=' 문자와 like 문자열을 필터링한다.
그래서 instr이라는 새로운 함수를 이용해 입력을 해보도록 하자.
instr은 앞에 입력한 인자에 뒤에 입력한 문자열이 있는지 확인하여 인덱스를 출력하는 함수이다.
이렇게 참 값으로 id 파라미터에 admin을 입력하니 Hello admin이 출력되는 것을 확인할 수 있다.

<instr 함수를 이용한 admin 입력과 출력> 그 다음, pw의 길이를 먼저 확인해야 한다.
페이지에서 부등호를 이용해 먼저 참 값이 제대로 입력이 되는지 확인해보자.
앞의 Level들처럼 입력을 해도 페이지에서는 출력이 잘 되는 것을 볼 수 있다.

<부등호를 이용한 pw 길이의 확인> 부등호를 이용해 페이지에서 길이를 알아낼 수도 있지만, 공부를 위해 코드를 만들도록 하자.
'=' 문자와 like 문자열을 이용할 수 없으므로, 부등호를 이용해 같지 않음(<>)을 표현해 입력을 한다.
Hello admin이 나타나지 않을 때 pw의 길이를 출력해주면 된다.

<pw의 길이를 구하는 코드> 다음으로, pw의 값을 확인할 차례이다.
ascii 함수를 사용하지 못해 ord 함수를 사용하려고 했지만, or 문자열도 필터링되고 있다.
다른 방법을 이용해야 하는데, hex 함수를 이용해보도록 하자.
hex 함수는 이름대로 입력받은 수를 16진수 문자열로 출력해주는 함수이다.
코드를 작성해 실행해보면 pw가 출력이 된다.


<pw 값 출력> 출력된 pw 값을 입력하면 BUGBEAR Clear!가 출력되며 문제가 해결된다.

<bugbear 문제 완료> 반응형'Wargame > L.O.S' 카테고리의 다른 글
[L.O.S] Level 15 - assassin (0) 2022.12.05 [L.O.S] Level 14 - giant (0) 2022.12.04 [L.O.S] Level 12 - darkknight (0) 2022.12.04 [L.O.S] Level 11 - golem (0) 2022.12.02 [L.O.S] Level 10 - skeleton (0) 2022.12.01