Skip to content

Latest commit

 

History

History

VAMPIRE

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

VAMPIRE

Problem

<?php 
  include "./config.php"; 
  login_chk(); 
  dbconnect(); 
  if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~"); 
  $_GET[id] = str_replace("admin","",$_GET[id]); 
  $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"); 
  highlight_file(__FILE__); 
?>

Background Knowledge

Inspection

  • if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
    • ' 작은따옴표를 거른다.
  • $_GET[id] = str_replace("admin","",$_GET[id]);
    • 파라미터로 넘어가는 id의 내용 중 admin을 빈칸으로 치환한다.
  • select id from prob_vampire where id='{$_GET[id]}'
    • 파라미터로 id가 넘어간다.
  • if($result['id'] == 'admin') solve("vampire");
    • 쿼리문의 결과의 idadmin이라면 통과한다.

Solution

  • str_replace()는 재귀적이 아닌 최초 1회 탐색을 하기 때문에, 다음과 같이 겹쳐서 쓴다.
    • adadminmin
    • str_replace("admin","","adadminmin"); -> "admin"