wargame/Lord Of SQL Injection

[LOS] cerberus

LimeLee 2019. 7. 26. 11:03

소스코드 분석

<?php
  include "./config.php";
  login_chk();
  $db = mongodb_connect();
  $query = array(
    "id" => $_GET['id'],
    "pw" => $_GET['pw']
  );
  echo "<hr>query : <strong>".json_encode($query)."</strong><hr><br>";
  $result = mongodb_fetch_array($db->prob_cerberus->find($query));
  if($result['id']) echo "<h2>Hello {$result['id']}</h2>";
  if($result['id'] === "admin") solve("cerberus");
  highlight_file(__FILE__);
?>

1. $db = mongodb_connect(); > DB 환경 MongoDB

2. if($result['id'] === "admin") solve("cerberus"); > 반환값과 문자열 'admin' 비교, 인증우회 가능

문제 풀이

NOSQL Injection from MongoDB

MongoDB환경에서의 sqli를 잘 정리해 둔 글.

다른 MongoDB 환경의 문제를 푸는데도 도움이 된다.

이번 문제는 단순하게 인증우회하면 되는 문제기 때문에 $ne를 사용한다.

아래와 같이 요청한다.

?id=admin&pw[$ne]=ha  

cerberus 문제의 admin 계정의 pw는 ha는 아니므로(admin의 패스워드 길이는 17자) admin을 반환하고 클리어 할 수 있다.

'wargame > Lord Of SQL Injection' 카테고리의 다른 글

[LOS] incubus  (0) 2019.07.26
[LOS] siren  (0) 2019.07.26
[LOS] kraken  (0) 2019.07.26
[LOS] mummy  (0) 2019.07.26
[LOS] yeti  (0) 2019.07.26