<?php include "./config.php"; login_chk(); dbconnect(); if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe"); $query = "select id from prob_darkelf where id='guest' and pw='{$_GET[pw]}'"; echo "
query : {$query}
"; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) echo "Hello {$result[id]}
"; if($result['id'] == 'admin') solve("darkelf"); highlight_file(__FILE__); ?>
6번째 줄을 보면 or, and 가 필터링되어 있다.
id 값은 guest로 되어있고, id 값이 admin이여야 문제가 풀린다.
따라서 or, and를 우회하면 끝날 것 같다.
[*] or, and 대체 1. or : || 2. and : && |
우회하는 법만 알면 풀이는 매우 간단하다