wargame.kr 19번 dmbs335 라는 문제다.

점수는 700point. 점수가 올랐다. 살짝 긴장이 된다.

sql injection 문제인 것 같다. 시작해보자.

흠... 검색 가능한 게시판이 보인다. 검색어로 sql injection이 이루어질 것 같다.

소스부터 확인해보자.


일단 먼저 select 구문에 $where_clause라는 변수를 통해 입력이 가능할 것 같다.

그렇다면 이 변수의 값을 원하는 값으로 넣어줘야하는데 관련된 소스를 찾아봤다.

보아하니 query_parts라는 변수가 존재하면 이 변수의 값을 통해 where_clause의 값이 정해지는 것 같

고 query_parts는 col이란 변수가 존재하면 값이 만들어 지는 것 같다.

그렇다면 col의 값을 매칭되지 않는 값으로 넘겨 존재하지 않게 만들고 query_parts의 값을 내가 원하는 쿼리값으로 만들면 성공적으로 sql injection이 일어날 것 같다.

그렇다면 query_parts의 값을 원하는 값으로 만들어야 되는데 자세히보니 url 값이 넘어올 때 parse_str란 함수가 씌워진다. 뭔가 하고 찾아봤더니 url값을 받아 변수로 만들어 주는 함수란다.

그렇다면 이 함수를 통해 임의로 col의 값을 매칭되지 않는 값으로 변조하고 query_parts의 내가 원하는 값으로 추가해버리면 될 것 같다.

burp suit를 키고 url값에 1 union select 1,2,3,4 # 을 줘봤다. 정상적으로 나온다.

그렇다면 이제 할 일은 정해졌다. simpleboard 문제에서 썻던 쿼리를 거의 그대로 가져다 썻다.

먼저 1 union select table_name,2,3,4 from information_schema.tables # 쿼리를 주고 테이블을 구한다.

다음으로 플래그를 구한다.
1 union select column_name,2,3,4 from information_schema.columns where table_name='Th1s_1s_Flag_tbl'#

마지막으로 플래그를 구한다.
1 union select f1ag,2,3,4 from Th1s_1s_Flag_tbl #

성공! 점수가 올라서 살짝 기대했는데 생각보다 쉬워서 맥이 빠졌던 문제.


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

wargame.kr ip log table  (0) 2018.01.04
wargame.kr lonely guys  (0) 2018.01.04
wargame.kr crack crack crack it!  (0) 2018.01.04
wargame.kr img recovery  (0) 2018.01.04
wargame.kr pyc decompile  (0) 2018.01.04
블로그 이미지

JeonYoungSin

메모 기록용 공간

,