반응형
<?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__);
?>
소스코드 분석
음... str_replace를 이용하여 get방식으로 가져오는 id파라미터에 admin이 있으며 "" 공백으로 바꾸는 함수를 이용하여 필터를 하는중
'(싱클 쿼터)를 필터를 하는중
풀이
admin이라는 문자열을 공백으로 치환하는 것이기 때문에 페이로드를 id=aadmindmin이라고 한다면 admin이라는 문자열은 공백으로 치환되고 a와 dmin이 합쳐져 admin의 문자열은 그대로 쿼리로 날라가게 된다.