<문제>

<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); // do not try to attack another table, database!
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'"; // 입력한 id와 pw로 SQL쿼리(입력한 id와 pw가 prob_gremlin 테이블에 존재하는지 확인) 생성
echo "<hr>query : <strong>{$query}</strong><hr><br>"; // 생성된 쿼리 출력
$result = @mysqli_fetch_array(mysqli_query($db,$query)); // 쿼리를 실행하고 $result 변수에 쿼리 실행 결과를 배열 형태로 저장
if($result['id']) solve("gremlin"); // $result에 id가 존재한다면(입력한 id와 pw가 데이터베이스에 존재하고 일치하면) 문제 해결한 것
highlight_file(__FILE__);
?>
종합해본 결과 URL의 쿼리 문자열에 SQLi 기본 페이로드인 id=1&' OR '1'='1 입력해보자.


Clear!