""
잘 보면 가운데 공백이 없다.<?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__);
?>
이번 문제는 저번 문제의 업그레이드 버전이다.
strtolower
함수로 들어온 문자열을 모두 소문자로 바꾼다.
그리고 str_replace
함수로 바꾼 문자열에서 admin
을 ""
으로 교체한다.
코드 해석에서 말한 것처럼 admin
을 ""
으로 교체를 한다. 그런데 힌트에서 말한 것처럼 ""
는 그냥 삭제와 같은 의미로 사용할 수 있다. 따라서 adadminmin
처럼 admin
문자열 사이에 admin
을 삽입하면 해결이 된다.
https://los.rubiya.kr/chall/vampire_e3f1ef853da067db37f342f3a1881156.php?id=adadminmin