소스코드 분석
<?php
include "./config.php";
login_chk();
$db = sqlite_open("./db/chupacabra.db");
$query = "select id from member where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = sqlite_fetch_array(sqlite_query($db,$query));
if($result['id'] == "admin") solve("chupacabra");
highlight_file(__FILE__);
?>
1. sqlite_open("./db/chupacabra.db");
> DB 환경이 sqlite.
2. if($result['id'] == "admin") solve("chupacabra");
> admin이라는 값을 반환하게 하면 클리어.
3. $result['id'] == "admin"
> sqlite 쿼리의 값을 문자열과 비교하므로 admin에 해당하는 id와 pw를 파라미터에 요청할 필요 없이 인증우회로도 OK.
문제 풀이
신규로 풀린 문제들의 컨셉은 SQLI를 공부할 때 자주 사용하는 MYSQL외의 DB환경에서의 SQLI를 연습해보기 위한 문제로 난이도 자체는 어렵지 않다.
cobolt 문제의 sqlite 버전으로 pw를 모르는 "admin"값을 단순 인증우회하여 파라미터는 다음과 같이 요청한다.
?id=admin'-- -
'wargame > Lord Of SQL Injection' 카테고리의 다른 글
[LOS] banshee (0) | 2019.07.17 |
---|---|
[LOS] manticore (0) | 2019.07.17 |
[LOS] cyclops (0) | 2019.05.10 |
[LOS] godzilla (0) | 2019.05.10 |
[LOS] death (0) | 2019.05.10 |