ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [L.O.S] Level 18 - nightmare
    Wargame/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

    댓글

Designed by Tistory.