* 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]
위 명령어로 각 서버를 구동해 주고
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이 아니라 댓글로 하라는 문제다
댓글에 스크립트를 넣어본다
개발자툴에서 번호를 확인해서 넣으라고 한다
위와 같이 숫자하나가 나온다
위 숫자를 입력하면 성공 메시지가 나온다