-
[L.O.S] Level 18 - nightmareWargame/L.O.S 2022. 12. 6. 03:26반응형
Level 18 - nightmare를 풀어보자.
이번 문제는 pw 파라미터에 값을 입력하는데 몇 가지 필터링과 제약조건이 있다.
우선 기본적으로 필터링되던 문자들에 '#'과 '-' 문자가 필터링되는데, 주석에 관련된 문자이다.
다음으로 입력하는 pw의 길이가 6이 넘어가면 공격이 진행되지 않는다.

<nightmare의 php 코드 내용> 알고있던 주석 처리인 '#'과 '-- '를 제외하고 다른 주석 처리 방법이 필요하다.
먼저 '/**/' 같은 경우는 입력하기에 짧기도 하고 뒤에 다른 입력이 없기에 사용하지 못한다.
또 다른 방법으로는 ';%00'이 있는데, 이것은 sql의 마지막을 의미하는 ';'과 NULL을 이용한 주석이다.
이 주석 방법을 이용해 참 값을 입력해보도록 하자.
싱글쿼터(')와 괄호를 넣어 pw의 입력을 닫아주고, ||와 1을 넣고 주석 처리를 해준다.
그런데 입력의 길이가 7이라서 No Hack ~_~ 페이지가 나타난다.

<입력 길이 초과> 그렇다면 어떻게 문제를 해결할 수 있을까??
우선 꼭 넣어야 할 문자가 ') 와 ;%00으로 길이가 4이다.
그렇다면 남은 2개의 문자를 이용해 참 값을 표현해야 한다.
해결을 위해 알아야 할 것이 있다.
pw에 입력을 할텐데, 공백은 False가 된다.
즉, ('')은 False 이고 0과 같다고 할 수 있다.
그렇다면 입력이 ('')=0이 된다면 False=False를 의미하면서 참 값이 된다.
이것을 이용해 pw에 값을 입력해주면 NIGHTMARE Clear!가 출력되며 문제가 해결된다.

<nightmare 문제 완료> 반응형'Wargame > L.O.S' 카테고리의 다른 글
[L.O.S] Level 20 - dragon (0) 2022.12.08 [L.O.S] Level 19 - xavis (1) 2022.12.07 [L.O.S] Level 17 - zombie_assassin (0) 2022.12.05 [L.O.S] Level 16 - succubus (0) 2022.12.05 [L.O.S] Level 15 - assassin (0) 2022.12.05