<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
$_GET[id] = strtolower($_GET[id]);
$_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 = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id'] == 'admin') solve("vampire");
highlight_file(__FILE__);
?>
if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
GET방식으로 pw를 받으며, pw에 특수문자 작은 따옴표 (')
와 /i 대소문자가 구분 되지 않으면 필터링되서 No Hack ~_~ 이 출력된다.
$_GET[id] = strtolower($_GET[id]);
대문자를 소문자로 바꾸어 준다.
$_GET[id] = str_replace("admin","",$_GET[id]);
str_replace(찾을 문자, 변경하려는 문자, replace할 대상)
str_replace("admin","공백",$_GET[id])
-> $_GET[id]에서 admin 문자를 찾은 후 공백으로 replace
$query = "select id from prob_vampire where id='{$_GET[id]}'";
id=$_GET[id]이며
if($result['id'] == 'admin') solve("vampire");
만약 id=admin이면 성공적으로 출력
id=adadminmin
str_replace
에서 admin을 공백으로 바꾸기 때문에 adadminmin을 입력해주었다.