본문 바로가기
WebGoat

Web Goat / Web Wolf

by 판매자명단 2023. 8. 22.

 

* vmware window 7 (NAT) 사용

* java, webgoat, webwolf, burp suite 설치

# C:\programfile\java\jdk~\bin 안에 webgoat,webwolf file 이동
java -jar webgoat~ --server.address=[win7 ip]
java -jar webwolf~ --server.address=[win7 ip]

위 명령어로 각 서버를 구동해 주고

 

8080을 webgoat에서 사용중이므로 8081 사용

 

burp suite와 win7 proxy를 설정해 준다

 

 

해당 주소로 각각 접속 후 burp suite가 잘 잡아오는지 확인한다

 

HTTP Basic

 

POST or GET과 magic number를 맞추라고 한다 일단 아무거나 전송해 본다

 

 

POST전송에 magic_num이 45인걸 확인할 수 있다

 

 

answer과 magic_answer를 수정해서 forward 해주면 successfully가 뜬다

 

 

 

HTTP proxies

 

 

Method를 GET으로 변경하고 header를 추가하고 changeMe의 value를 변경하라고 한다

 

 

burp suite에서 intercept 후 method를 바꿔주고 (직접 입력으로 변경하면 안 됨) 요청대로 내용을 변경 후 forward 해주면

 

 

well done이 뜨면서 성공메시지를 확인할 수 있다

 

SQL injection

 

select 문을 보니 Account Name이 userName에 들어가는 것 같다

 

 

' or 1=1 --을 입력해 항상 참으로 만들어주면 모든 쿼리를 볼 수 있다

 

or 1=1 --만 입력하면 안 되는 걸 봐 선 아마 글자가 깨진 부분이 ' 이었던 것 같다

 

 

위랑 비슷해 보이지만 뒤에 ' 이 없고 int형을 넣어야 하는 것 같다

 

따라서 주석문 처리는 없어도 되고 맨 앞에 int형 아무거나 넣어주면 된다

 

 

6.a로 비밀번호를 알아내고 6.b에 입력해 체크하는 것 같다

 

 

' union select null, user_name, password, null, null, null, null from user_system_data --

 

위 내용을 넣어서 dave의 비밀번호를 알아내 입력하니 성공메시지가 뜬다

 

 

sql문과 injection을 이용해 tom의 비밀번호를 알아내는 문제이다

 

 

substr로 password를 한 자리씩 잘라서 참과 거짓을 판별하려고 한다

tom' and substr(password,1,1)='a' -- 문의 내용이 참이라면 aleady exist라는 문구가 나오고

거짓이라면 create에 성공했다고 나온다

모든 경우의 수를 다 넣어보기는 너무 많으므로 burp suite를 사용하려 한다

 

 

우선 password의 길이부터 length를 이용해 총 23자리 인걸 알아냈다

 

 

이제 substr를 사용해 password를 한 자리씩 찾아본다

 

 

각 자릿수의 문자를 모두 알아내 조합해 보면 thisisasecretfortomonly 가 password인걸 알 수 있다

 

 

tom에 위 비밀번호로 로그인해 보면 성공메시지가 나온다

XSS

같은 사이트를 하나 더 열어서 cookie 값을 확인하라는 문제이다

두 탭의 cookie값이 같냐고 물어본다 하나 더 열어서 console창에 alert(document.cookie)를 입력해 확인해 보면

두 탭의 cookie값이 같은 걸 확인할 수 있다 따라서 yes를 입력해 주면

성공 메시지가 뜬다

필드 중에 취약한 부분을 찾는 문제다

위에 쓰여있는 스크립트를 하나씩 넣어보면 card number 부분이 취약한 걸 확인할 수 있다

test code가 남아있는 거 같으니 test경로를 찾으라는 문제다

source에 goatrouter.js 파일을 확인해 보면 test경로가 보인다

문제에 나온 경로에 lesson 대신 test를 입력해 보면 성공 메시지가 나온다

test경로가 취약하므로 위 함수로 공격해 보라고 한다

탭을 하나 더 열어서 위 경로를 입력하고 console 창에 가보면 숫자 하나를 알려준다

숫자를 넣어보면 성공 메시지가 나온다

위 문제를 url이 아니라 댓글로 하라는 문제다

댓글에 스크립트를 넣어본다

개발자툴에서 번호를 확인해서 넣으라고 한다

위와 같이 숫자하나가 나온다

위 숫자를 입력하면 성공 메시지가 나온다