SH1R0_HACKER
1. gremlin 본문
[ 문제 ]
<?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 |
---|