본문 바로가기
war game/웹 워게임(los)

load of sql injection vampire

by 강깅꽁 2016. 9. 13.
반응형

<?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의 문자열은 그대로 쿼리로 날라가게 된다.