[LOS] troll

Yennytime·2023년 1월 13일
0

Lord of SQL Injection

목록 보기
5/20
post-thumbnail

<?php  
  include "./config.php"; 
  login_chk(); 
  $db = dbconnect(); 
  if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
  if(preg_match("/admin/", $_GET[id])) exit("HeHe");
  $query = "select id from prob_troll 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("troll");
  highlight_file(__FILE__);
?>

🔺 코드분석

  1. if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
    GET방식으로 pw를 받으며, pw에 특수문자 작은 따옴표 (')/i 대소문자가 구분 되지 않으면 필터링되서 No Hack ~_~ 이 출력된다.

  2. if(preg_match("/admin/", $_GET[id])) exit("HeHe");
    admin을 필터링하지만 대소문자 구분은 필터링 되지 않는다.

  3. $query = "select id from prob_troll where id='{$_GET[id]}'";
    id=$GET[id]이며,

  4. if($result['id'] == 'admin') solve("troll");
    id=admin일 경우 성공적으로 출력된다.


🔺 풀이 과정

  1. id=ADMIN

admin은 필터링이 되지만, 대소문자를 구분하지 않기 때문에 대문자를 사용했다.

profile
It's Yennytime💙

0개의 댓글