일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- select()
- summarize()
- mutate()
- groupe_by()
- samp;e_frac()
- filter()
- 대칭형 알고리즘
- dplyr
- sample_n()
- AES
- distinct()
- proc contents
- arrange()
- Today
- Total
Gae Ko's Blog
los : giant 본문
[코드분석]
<?php
include "./config.php";
login_chk();
dbconnect();
↑DB와 연결을 위한 코드
if(strlen($_GET[shit])>1) exit("No Hack ~_~");
↑strlen함수를 통한 문자열 길이 제한
if(preg_match('/ |\n|\r|\t/i', $_GET[shit])) exit("HeHe");
↑ preg_match를 통한 필터링
$query = "select 1234 from{$_GET[shit]}prob_giant where 1";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
↑쿼리실행
$result = @mysql_fetch_array(mysql_query($query));
if($result[1234]) solve("giant");
↑문제의 포인트
[내 풀이]
코드를 보면 strlen함수를 통해 shit의 입력값의 문자열길이를 한자리로 제한하고
공백, \n, \t, \r을 포함한 입력값을 필터링하여 공백과 공백대신 할 문자열들을 막고있다.
그리고 쿼리실행문을 보면 select 1234 from{$_GET[shit]}prob_giant where 1 이렇게 from과 prob_giant가 붙어져있어서 쿼리실행이 안되고 있다.
이 문제를 해결해서 쿼리를 실행하면 문제가 풀린다고 한다.
공백을 대체하면서 한 글자인 문자열이 무엇인지 계속 생각하고 찾아보았지만 나오지 않는다....
결국 문제 힌트를 보았다...ㅠ
힌트 1. 현재 쿼리를 실행하기위해서 shit값에 공백에 해당하는 문자를 넣어줘야함
힌트 2. strlen($_GET[shit])>1 조건에 만족해야함
음... 힌트들이 이미 내가 알고 있는 사실들인데
내가 알고 있는 공백을 대신할 문자열로 /**/ 와 %09, %0b, %0c, %0d, %0a 이 있다.
URL- encoding |
Description |
%0b |
virtical tab 로 이스케이프 문자로는 \v |
%0c |
form feed 로 서식 제어 문자 |
%0d |
carriage return 로 제어문자로 커서를 현재행의 맨 좌측으로 옮기기, \r 을 가리킨다 |
%0a |
line feed 로 제어문자로 커서를 현재 행의 다음 행으로 옮기기, \n 를 가리킨다 |
%09 |
Tab 로 이스케이프 문자로는 \t |
아하.... 하나하나 찾아보니 드디어 알거 같다!
preg_match를 통해 \n, \t, \r 이 포함된 입력값을 필터링해주는데
공백을 대신할 수 있는 표에 있는 문자열중에서 필터링되는 것을 제외하면 %0b, %0c
주석표시인 /**/은 문자열길이가 1보다 크므로 탈락!
그래서 가능하다고 생각되는 %0b와 %0c 를 하나하나 넣어보았다.
▲ 제어문자라고해서 출력되는게 없는 줄 알았는데 이상한 문자가 출력되었다. 이건 뭐지.... 하지만 그래도 SUCCESS !!
▲ %0c는 프린트기기에서 다음페이지로 넘어가게 하는 서식 제어문자로 출력되는 값이 없이 공백을 대신한다. SUCCESS !!
[p.s]
문자열의 길이가 1보다 크면 안된다고 하는데 %0c 와 %0b는 길이 인식을 어떻게 하길래.... 흠
그리구 %0b은 virtical Tab 이라길래 출력값이 없을 줄 알았는데 왜 출력값이 나오는걸까...?
민지언니에게 물어봐야징
[물어본 결과]
'웹해킹 > [los] Lord of SQL' 카테고리의 다른 글
los:zombie_assassin (0) | 2017.09.03 |
---|---|
los : assassin (0) | 2017.08.26 |
los : bugbear (0) | 2017.08.17 |
los : darkknight (0) | 2017.08.17 |
los : golem (0) | 2017.08.17 |