LOS #09 vampire

2020. 10. 28. 22:55
728x90
728x90
728x90
 

Lord of SQLInjection

 

los.rubiya.kr

Source code

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

 

Query

select id from prob_vampire where id=''

 

Write-up

[사진 1]

위 사진에서 확인할 수 있는 정보는 다음과 같다.

  • 파라미터는 id 1개가 사용될 수 있다.

  • id 값에 single quote 필터링을 하고 있다.

  • "admin" id 값을 요구하고 있다.

  • strtolower() 함수를 통해 id 값을 소문자로 변환하고, str_replace() 함수로 입력 id 값이 "admin" 일 경우에 문자열을 지워버린다.

간단하게 str_replace() 함수를 우회할 수 있도록 id 값을 전달하면 된다.

 

* 함수 참고 링크

 

PHP: strtolower - Manual

the strtolower version to support most amount of languages including russian, french and so on:

 

PHP: str_replace - Manual

 

 

Parameter

id=aadmindadminmadminiadminn

중간의 "admin" 문자열은 str_repleace() 함수로 인해 지워지고, 쿼리문은 다음과 같다.

select id prob_vampire where id="admin"

 

Success

[사진 2]

728x90
728x90

'Wargame > LOS' 카테고리의 다른 글

LOS #11 golem  (0) 2020.10.28
LOS #10 skeleton  (0) 2020.10.28
LOS #08 troll  (0) 2020.10.28
LOS #07 orge  (0) 2020.10.28
LOS #06 darkelf  (0) 2020.10.28

+ Recent posts