SH1R0_HACKER

1. gremlin 본문

Web/Lord of SQLINJECTION

1. gremlin

SH1R0_HACKER 2021. 1. 21. 15:02

[ 문제 ]

<?php
  include "./config.php";
  login_chk();
  $db = dbconnect();
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
  $query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
  echo "<hr>query : <strong>{$query}</strong><hr><br>";
  $result = @mysqli_fetch_array(mysqli_query($db,$query));
  if($result['id']) solve("gremlin");
  highlight_file(__FILE__);
?>

 

preg_match 는 입력한 문자열에서 특정 패턴(문자열)을 검색할 때 사용합니다.

 

// about preg_match (https://www.php.net/manual/en/function.preg-match.php)

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

 

따라서 위 구문에서는 $_GET[id]와 $_GET[pw] 에

prog

_

\.

가 입력될 경우 종료(exit)하고 No Hack ~_~ 이라는 문구를 출력합니다.

 

$query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";

 

쿼리문을 보니 사용자가 입력한 id와 pw의 문자열을 가져와 prob_gremlin DB와 비교합니다.

 

$result = @mysqli_fetch_array(mysqli_query($db,$query));

 

 

'Web > Lord of SQLINJECTION' 카테고리의 다른 글

LORD OF SQLINJECTION  (0) 2021.01.21