소스코드 분석
<?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' 비교, 인증우회 가능
문제 풀이
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 |