[힌트]
1. 주석처리
# : %23, ' : %27
2. or and 우회
or : ||
and : &&
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
첫번 째 필터링 것들은, prob, _, ., (, ), 대소문자를 구분하지 않음, 필터링 하는 문자열을 사용 시 No Hack을 출력한다.
if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe");
두번 째 필터링하는 것들은 and 와 or를 필터링하고 있다.
이를 대체하기 위해서는 &&와 ||를 사용할 수 있다.
if($result['id'] == 'admin') solve("darkelf");
id값으로 admin이 들어오면 문제가 풀리는 것을 볼 수 있다.
위의 사진을 보면 id값이 geust로 고정되어 있는 것을 볼 수 있다
id를 admin으로 만들기 위해서는 or를 사용해서 하는데, or를 필터링하고 있으므로 ||을 사용해야 한다.
id='guest' and 부분을 거짓으로 만들기위해서 pw='||id='admin을 입력했다
입력한 query를 해석해보자면, id가 guest이고, pw가 없을 때(거짓) 또는 id가 admin이다.(참)
결과적으로는 논리합때문에 참이되어버리고, 문제가 해결되게 된다.
'Webhacking' 카테고리의 다른 글
[LOS] Level 5 wolfman 문제풀이 (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 |