[WARGAME][los] vampire

jckim22·2022년 11월 23일
0

[WEBHACKING] STUDY (WARGAME)

목록 보기
101/114

아래는 서버 코드이다.

<?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함수로 대문자 우회를 방어하고 있었다.

하지만 익숙한 replace함수가 보인다.
replace함수로 admin을 공백으로 치환해주고 있었다.

그럼 지금까지 해왔던 것처럼 adadminmin이런식으로 우회하면 될 것 같다.

아래처럼 말이다.

select id from prob_vampire where id='adadminmin'

위같이 하게 되면 admin이 한번 공백으로 치환되고 그 후에 쿼리로는 admin이 가게 될 것이다.
replace의 특성상 한번밖에 필터링 해주지 않는다.

그럼 해보자.

바로 클리어할 수 있었다.

profile
개발/보안

0개의 댓글