728x90
반응형

query : select id from prob_vampire where id=''

 

<?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__); 

?>

 

 

PHP 문법

strtolower()

  • 소문자로 치환된 문자열을 반환
  • 예시)
    $string="I aM APpLE";
    echostrtolower($string); 
  • 결과)
     i am apple

str_replace()

  • 해당 되는 문자열을 원하는 문자열로 치환
  • 예시)
    $string = "abcdefabcdef";
    $result
    = str_replace ("abc", "zzz", $string);

    결과
    )
    echo $result; // 출력 결과 : zzzdefzzzdef

 

 

코드 해석

if(preg_match('/\'/i'$_GET[id])) exit("No Hack ~_~");

  • ' 필터링 수행

$_GET[id] = strtolower($_GET[id]);

  • 입력된 문자를 모두 소문자로 변환

$_GET[id] = str_replace("admin","",$_GET[id]); 

  • admin 문자열이 들어올 경우 ""(빈칸) 으로 치환

if($result['id'] == 'admin'solve("vampire"); 

  • id admin이면 문제 해결

 

 

문제 해결

admin이 ""(빈칸)으로 치환되지만 함수 처리 이후 admin이 Injection 되도록 수행

  • GET 방식으로 URL에 SQL 대입 ( ?id=adadminmin )
  • query : select id from prob_vampire where id='admin'
728x90

'*Wargame > [ LS ] Load of SQL Injection' 카테고리의 다른 글

[ LS - 11 ] golem  (0) 2021.12.20
[ LS - 10 ] skeleton  (0) 2021.12.20
[ LS - 08 ] troll  (0) 2021.12.18
[ LS - 07 ] orge  (0) 2021.12.18
[ LS - 06 ] darklef  (0) 2021.12.18

+ Recent posts