목록Wargame/DVWA (7)
cgy12306
언어 선택 칸만 달랑 있다. 소스 코드도 아무것도 없다. DOM 기반 XSS는 JavaSciptr가 URL에 숨겨져 있고 페이지가 제공 될 때 페이지에 포함되지 않고 렌더링하는 동안 페이지에서 JavaScript에 의해 추출되는 특수한 경우이다. 그러면 URL상에서 코드를 입력해주면 될것 같다. View Help 버튼을 눌러서 Object를 확인해 보자. 다른 사용자의 브라우저에서 자신의 JavaScript를 실해앟고 이를 사용하여 로그인 한 사용자의 쿠키를 훔쳐라이다. http://dvwa.sejongssg.kr/vulnerabilities/xss_d/?default=GermandEalert(document.cookie);를 입력해보자. 쿠키를 얻었다.
입력받은 값을 echo로 필터링 없이 그대로 출력해준다. View Help 버튼을 눌러서 Object를 확인하자. 유저의 로그인된 쿠키를 탈취해야 한다. 를 입력해보자. 세션 값을 얻었다.
첫 화면을 보면 Name과 Message를 입력하고 Sign Guestbook과 Clear Guestbook버튼이 있다. 아무값이나 넣고 Sign Guestbook버튼을 누르면 위와 같이 들어간다. Clear Guestbook을 누르면 글이 삭제된다. 그러면 View Source 버튼을 눌러서 코드를 확인해 보자. 아무런 필터링 없이 message와 name이 고대로 들어가는 것을 볼 수 있다. View Help 버튼을 눌러보자. 목표는 너가 선택한 페이지로 모두를 리다이렉트 시켜라이다. 1이라는 글자를 출력하는 창을 뜨게 하는 명령어이다. 1이 출력되었다. 웹 루트 아래에서 검색이 된다. 절대 경로로 입력해보자. 또한 글자수 제한이 있기 때문에 최대한 간결하게 줄여준 상태로 입력해보자. 페이지 로케이션..
View Source를 눌러서 코드를 보자. Objective를 보면 SQL database의 버전을 찾아내라이다. 1~5까지는 exists라 뜨고 그 이후 부터는 아래와 같이 뜬다. 이 점을 이용해서 and 연산자를 사용해서 version을 알아내면 될 듯 하다. select version(); 를 mysql에서 쳐보면 버젼이 나온다. version()은 최소 1글자 이상이기 때문에 무조건 참이 들 것이다. 1' and length(version()) >=1# 를 입력해보자. 참 and 참이니 exists가 뜬다. 1부터 계속 숫자를 늘려가며 입력해보자. 1' and length(version()) >=24#를 입력했더니 MISSING이 떴다. 24글자 이상이란 말은 거짓이니 23글자라는걸 알아냈다. ..
User ID를 입력하는 칸이 보인다. View Source를 눌러서 소스를 보자. 입력받은 UserID를 이용해서 first_name과 last_name을 저장하고, first_name과 last_name, ID를 출력한다. View Help를 눌러서 Objective를 확인 하자. 패스워드를 구하라이다. 1을 넣었을 때 결과 값이다. 다시 소스에서 SELECT 문을 보면 입력받은 값이 $id에 들어가는 걸 볼 수 있다. 그러면 '(홑따옴표)를 한번더 입력해주고 or 연산자를 이용해서 무조건 참인 쿼리문을 만들어 주면 모든 테이블을 출력할 것 같다. ' or '1'='1를 입력해보자. 쿼리문을 적어보면 SELECT first_name, last_name FROM users WHERE user_id=''..
View Source를 눌러서 소스 코드를 보자. POST로 입력 받은 값을 shell_exec로 명령어를 만들어 줘서 그걸 cmd변수에 넣어준다. Objective를 확인해 보자. 목표는 웹 서비스의 사용자와 hostname을 알아내라이다. FTZ 3번 처럼 여러 명령어를 사용하게 해주는 ;(세미콜론)을 이용해서 여러 명령어를 넣어주면 될 듯 하다. whoami는 자신이 누구인지 알아낼 때 사용하는 명령어이다. hostname 명령어는 hostname을 알려주는 명령어이다. /etc/passwd 파일은 모든 사용자의 계정이 나와 있는 파일이다. who는 호스트에 로그인한 사용자의 정보를 출력해주는 명령어이다. 그러므로 웹 서비스 사용자는 ssg, www-data이다.
username과 password가 같으면 avatar 이미지를 출력하고 Welcome to the password protected area 문구를 띄우고 아니면 Username and/or password incorrect를 띄운다. admin과 123을 입력하고, 버프슈트를 이용해서 프록시를 구성한다. admin과 123이 들어가 있는 것을 볼 수 있다. 우클릭해서 Send to Intruder를 클릭해서 Intruder에게 보내준다. Intruder에서 Positions에 입력해준 password에 들어간 123에 마크를 칠해준다. Attack type은 4가지가 있다. Sniper는 하나의 Payload Set만 설정하여 공격을 진행하고, 여러 개의 Payload Position이 설정되어 있으..