Gae Ko's Blog

los : vampire 본문

웹해킹 /[los] Lord of SQL

los : vampire

Gae Ko 2017. 8. 17. 00:49


[코드분석]


<?php 
  
include "./config.php"
  
login_chk(); 
  
dbconnect(); 

↑DB와 연결을 위한 코드 


  if(preg_match('/\'/i'$_GET[id])) exit("No Hack ~_~"); 

↑preg_match를 통한 필터링


  $_GET[id] = str_replace("admin","",$_GET[id]); 

↑str_replace함수 작동


$query "select id from prob_vampire where id='{$_GET[id]}'"
  echo 
"<hr>query : <strong>{$query}</strong><hr><br>"

↑쿼리실행


$result = @mysql_fetch_array(mysql_query($query)); 
  if(
$result['id'] == 'admin'solve("vampire"); 

↑문제의 포인트 



[내 풀이]


코드를 보면 preg_mach를 통해 싱글쿼터(')를 필터링하고 

GET방식으로 넘겨받은 id입력값이 'admin'인 경우에 문제가 해결된다고 한다.


여기서 중간에 str_replace라는 새로운 함수가 포함된 코드가 있는데 

str_replace함수란 

str_replace( mixed $search, mixed $replace, mixed $subject )

함수이름처럼 문자열(subject)에 특정단어(search)가 포함되어 있는 부분을 원하는 값(replace)으로 치환한 결과값을 반환해준다.


그럼 이 문제에서는 

 $_GET[id] = str_replace("admin","",$_GET[id]); 

입력받은 값에서 'admin'이라는 단어가 포함되있으면 그 부분은 공백으로 바꾸라는 뜻으로 

문제의 포인트가 id='admin'인 걸 생각해보면 입력할 id값으로 직접적으로 'admin'으로 값을 넘겨줄 수 없다는 뜻이다.


생각을 하다가 srt_replace함수가 'admin'이라는 문자열을 찾는건데 대소문자를 구분해서 찾는 거 같아서 혹시나 하는마음에 대문자로 'ADMIN'으로 값을 입력해 보았다.


오 SUCCESS !!




예상치 못햇는데 풀리면 기쁘당 ! ㅎ.ㅎ








'웹해킹 > [los] Lord of SQL' 카테고리의 다른 글

los : golem  (0) 2017.08.17
los : skeleton  (0) 2017.08.17
los : troll  (0) 2017.08.16
los : orge  (0) 2017.08.12
los : darkelf  (0) 2017.08.12