[힌트]
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 |