Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 스프링구조
- 해킹
- 보안
- 자바 Array list
- 스프링
- sqlinjection
- 세션
- 웹 개발
- 웹
- php
- sql
- 쿠키
- 클라이언트
- 서버
- 자바 is-a
- APM
- 세션쿠키
- XSS
- Lord of sqlinjection
- 마이크로서비스 아키택트
- injection
- Los
- 스프링 특징
- 자바
- 자바 문법
- 스프링 종류
- 소켓
- lord of sqlinjection`
- lord of sqlinjectin
- 자바 has-a
Archives
- Today
- Total
LJ
Lord of SQLinjection ( 9번 ) vampire 본문
vampire 문제이다
이 문제도 코드만 보면 너무 쉽게 풀 수 있다.
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
$_GET[id] = strtolower($_GET[id]);
//$_GET['id'] 값을 소문자로 변환
$_GET[id] = str_replace("admin","",$_GET[id]);
//$_GET['id'] 값에서 "admin" 문자열을 제거
$query = "select id from prob_vampire where id='{$_GET[id]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id'] == 'admin') solve("vampire");
highlight_file(__FILE__);
?>
위의 주석처리 한 부분을 봤을 때 소문자로 변환 후 admin을 한번 제거 하는 것을 알 수 있는데
간단하게 생각해서
admin 사이에 admin을 넣어주면 사이에 들어간 admin이 사라지면서
문제가 해결된다.
안전한 코드 예시이다.
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if (!isset($_GET['id'])) {
exit("Invalid input");
}
$id = $_GET['id'];
if (preg_match('/\'/i', $id)) {
exit("No Hack ~_~");
}
$id = strtolower($id);
$id = str_replace("admin", "", $id);
// Prepare statement to prevent SQL injection
$stmt = $db->prepare("SELECT id FROM prob_vampire WHERE id = ?");
if ($stmt === false) {
die("Prepare failed: " . $db->error);
}
//prepare 메서드가 실패한 경우, 오류 메시지를 출력하고 종료
$stmt->bind_param("s", $id);
$stmt->execute();
//SQL 쿼리가 데이터베이스에서 실행되어 결과가 생성
$result = $stmt->get_result()->fetch_assoc();
if ($result && $result['id'] == 'admin') {
solve("vampire");
}
highlight_file(__FILE__);
?>
'IT 보안 > 보안첼린지' 카테고리의 다른 글
Lord of SQLinjection ( 12번 ) darkknight (1) | 2024.06.06 |
---|---|
Lord of SQLinjection ( 11번 ) golem (0) | 2024.05.28 |
Lord of SQLinjection ( 8번 ) troll (0) | 2024.05.23 |
XSS game level 6 (0) | 2024.05.20 |
XSS game level 5 (0) | 2024.05.20 |
Comments