목록전체 글 (370)
cgy12306
처음 화면을 보면 id와 pw를 받아오고, 그 값을 이용해서 select문을 추출해서 query 변수에 넣는다. 변수의 결과값을 result에 넣어주고 참이면 gremlin이 풀리게 된다. https://los.eagle-jump.org/gremlin_bbc5af7bed14aa50b84986f2de742f31.php?id=1&pw=1 위와 같이 입력하게 되면 아래와 같은 화면이 뜨게 된다. https://los.eagle-jump.org/gremlin_bbc5af7bed14aa50b84986f2de742f31.php?id=1&pw=' or '1'='1 이렇게 입력해주게 되면 pw에 걸려있는 '(작은따옴표)가 닫히게 되고, or '1'='1'을 해주게 되면 참이 된다. 앞의 값이 거짓이라도 뒤의 값이 참이..
basename은 해당 파일 경로에서 파일 이름만 추출해주는 함수이다. uploaded는 파일 선택 버튼이다. $_FILES['name명']['name']은 post 방식으로 선언된 파일을 받기 위한 변수 선언이라고 한다. 그러면 주소/hackable/uploads/파일명 이렇게 들어갈 것이다. GET으로 cmd변수에 담아서 그것을 system함수로 호출하는 php코드를 작성한다. 해당 파일을 업로드 해준다. 파일을 업로드 했더니 ../../hackable/uploads/upload.php가 올라갔다고 한다. ..은 이전 경로를 의미한다. 현재경로의 이전 이전 경로부터니까 최종경로는 dvwa.sejongssg.kr/hackable/uploads/upload.php일것이다. ls 명령어가 입력이 된다.
언어 선택 칸만 달랑 있다. 소스 코드도 아무것도 없다. 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이 설정되어 있으..
Direct3D 파일이 패킹이 되어있는지 확인해보자. 패킹이 안되어 있다. 정훈이랑 올리디버거로 프로그램을 실행시켰을 때 엔트리 포인트가 달랐다. 정훈이가 ASLR 걸려있는 것 같다는 추리를 듣고 인터넷에 ASLR이 걸려있는지 확인하는 방법과 해제하는 방법을 찾았다. PE view로 파일을 열고 IMAGE_OPTIONAL_HEADER에서 DYNAMIC_BASE를 확인할 수 있다. 동적으로 BASE를 변경해준다. 000015E에 8140이라 적혀있는 부분에서 40을 00으로 바꿔준다. 바꿔주면 아래와 같이 주소가 00403ECD로 바뀌는걸 볼 수 있다. 이렇게 엔트리 포인트가 고정이 되면 IDA로 정적 분석을 할 때 편하게 분석을 할 수 있다. 우선 HP를 변경을 하고 싶은데 10이라는 숫자가 어딘가에 담..