<?php include "./config.php"; login_chk(); dbconnect(); if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~"); $query = "select id from prob_wolfman 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("wolfman"); highlight_file(__FILE__); ?>
6번째 줄을 보면 공백이 필터링되어 있다.
쿼리문을보면 id값에 guest가 들어있고, 문제를 풀기 위해선 id에 admin을 넣고 공백(%20)필터링을 우회해야 한다.
[*] 공백(%20) 대체 1. () : 괄호 2. %09 : 탭 3. /**/ : 주석 4. %0a : 개행문자 5. %0b : 캐리지 리턴 |
여기서 괄호는 필터링 되고 있기 때문에 그외에 것들을 사용하면 된다.