본문 바로가기

Webhacking

[LOS] Level 5 wolfman 문제풀이

[힌트]

1. 화이트스페이스(빈칸) 우회

    - Tab : %09

    - Line Feed(\n) : %0a

    - Carrage Return(\r) : %0d

    - 주석 : /**/

    - 괄호 : ()

    - 더하기 : +

2. 주석처리 방법

    # : %23, ' : %27

if(preg_match('/prob|_|\.|\(\)/i'$_GET[pw])) exit("No Hack ~_~"); 을 통해서 핑터링을 하고 있다.

필터링 하는 문자는 prob, _, ., (, )가 존재하며, 해당 문자를 입력 시 No Hack이 뜬다.(대소문자를 구분하지 않는다)

그 다음 줄을 보니 또 필터링을 진행하고 있다.

if(preg_match('/ /i'$_GET[pw])) exit("No whitespace ~_~"); 

여기서 필터링 하는 문자는 whitespace 즉 공백을 필터링 하고 있으며 공백을 삽입 시 No whitespace를 출력한다.

 

이를 통해서, 알 수 있듯이 앞서 푼 문제들처럼, ' or 1=1#처럼 풀 수가 없다.

or 대신에 ||를 사용하면 공백없이 '||1=1을 입력해도 잘 동작한다.

 

if($result['id'] == 'admin'solve("wolfman");

이 부분을 확인해보면, id가 admin이면 wolfman의 문제가 풀린다는 것을 확인할 수 있다.

pw부분을 거짓으로 만들고, id부분을 참으로 만들어주면 문제가 풀릴 것 같다.

?pw=1%27||id=%27admin을 입력하면, pw는 거짓이지만, ||이 논리합이고, id가 admin으로 참이되면서,

결과적으로는 참이된다.

 

'Webhacking' 카테고리의 다른 글

[LOS] Level 6 darkelf 문제풀이  (0) 2019.05.31
[LOS] Level 4 Orc 문제풀이  (0) 2019.05.31
[LOS] Level 3 goblin 문제풀이  (0) 2019.05.24
[LOS] Level 2 Cobolt 문제풀이  (0) 2019.05.24
[LOS]Level1 gremlin 문제풀이  (0) 2019.05.24