문제 화면입니다. SQL injection 문제네요.



문제에 들어가보면 이렇게 테이블이 주어집니다. 간단히 기능 학습을 해보고 view-source를 눌러보겠습니다.



눈에 띄는 코드는 $_SERVER['QUERY_STRING']  함수와 parse_str 함수입니다.

$_SERVER['QUERY_STRING']은 넘어온 값을 저장하는 것입니다.

ex) id=123&pw=123


그리고 parse_str은 인자를 php변수로 저장하는 함수입니다.

따라서 get 방식으로 보낸 값들이 php변수로 저장되는것입니다.


그리고 아래의 

$col preg_match('/^(subject|content|writer)$/isDU',$col) ? $col ''

if($col) { 

        $query_parts $col " like '%" $keyword "%'"
    } 


에서 $col변수에 preg_match 함수가 false가 나오도록 한 다음 get으로 $query_parts에 원하는 쿼리를 입력해서 넘기면 문제를 풀 수 있습니다.



query_parts = 1 union select 1,2,3,4 -- 를 입력하면 1234가 나옵니다. 이제 table_name을 뽑아보도록 하겠습니다.


information_schema에서 table 목록들을 뽑았습니다. 플래그가 있을법한 테이블이 하나 있네요.



테이블 이름은 Th1s_1s_Flag_tbl 입니다. 이제 칼럼 목록을 뽑아보겠습니다.



column_type과 column_name을 같이 뽑았습니다. 



f1ag 칼럼이 있네요 이제 테이블과 칼럼을 알았으니 칼럼에 있는 값을 뽑겠습니다.



flag가 나왔습니다.



'Wargame > wargame.kr' 카테고리의 다른 글

wargame.kr ip_log_table 풀이  (0) 2017.02.23
wargame.kr simple board  (0) 2017.02.19
wargame.kr web_chatting 650p  (0) 2016.10.04
wargame.kr jff3_magic 800p  (0) 2016.09.03
wargame.kr 4번 login filtering 450p  (0) 2016.07.25

+ Recent posts