일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- summarize()
- 대칭형 알고리즘
- AES
- groupe_by()
- select()
- sample_n()
- arrange()
- distinct()
- mutate()
- dplyr
- samp;e_frac()
- filter()
- proc contents
- Today
- Total
Gae Ko's Blog
los : vampire 본문
[코드분석]
<?php
include "./config.php";
login_chk();
dbconnect();
↑DB와 연결을 위한 코드
if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
↑preg_match를 통한 필터링
$_GET[id] = str_replace("admin","",$_GET[id]);
↑str_replace함수 작동
$query = "select id from prob_vampire where id='{$_GET[id]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
↑쿼리실행
$result = @mysql_fetch_array(mysql_query($query));
if($result['id'] == 'admin') solve("vampire");
↑문제의 포인트
[내 풀이]
코드를 보면 preg_mach를 통해 싱글쿼터(')를 필터링하고
GET방식으로 넘겨받은 id입력값이 'admin'인 경우에 문제가 해결된다고 한다.
여기서 중간에 str_replace라는 새로운 함수가 포함된 코드가 있는데
str_replace함수란
str_replace( mixed $search, mixed $replace, mixed $subject )
함수이름처럼 문자열(subject)에 특정단어(search)가 포함되어 있는 부분을 원하는 값(replace)으로 치환한 결과값을 반환해준다.
그럼 이 문제에서는
$_GET[id] = str_replace("admin","",$_GET[id]);
입력받은 값에서 'admin'이라는 단어가 포함되있으면 그 부분은 공백으로 바꾸라는 뜻으로
문제의 포인트가 id='admin'인 걸 생각해보면 입력할 id값으로 직접적으로 'admin'으로 값을 넘겨줄 수 없다는 뜻이다.
생각을 하다가 srt_replace함수가 'admin'이라는 문자열을 찾는건데 대소문자를 구분해서 찾는 거 같아서 혹시나 하는마음에 대문자로 'ADMIN'으로 값을 입력해 보았다.
오 SUCCESS !!
예상치 못햇는데 풀리면 기쁘당 ! ㅎ.ㅎ
'웹해킹 > [los] Lord of SQL' 카테고리의 다른 글
los : golem (0) | 2017.08.17 |
---|---|
los : skeleton (0) | 2017.08.17 |
los : troll (0) | 2017.08.16 |
los : orge (0) | 2017.08.12 |
los : darkelf (0) | 2017.08.12 |