[bWAPP] 4주차
<low>
첫번쨰 문제는 xss라는 내용의 팝업창을 출력해내는 것이다. 팝업창을 뜨게 만드는 대표적인 방법으로는 script 태그의 alert 기능이 생각나서 바로 first name에 script 태그를 입력하고 last name에는 success를 입력해봤다.
입력 결과 xss라는 팝업창이 떴고 ok를 눌러보니까 원하는 문구 welcome success라는 문구를 얻을 수 있었다.
결론적으로 first name에는 <script>alert("XSS")</script>으로 lastname에는 welcome 뒤의 문구 success를 입력해서
welcome success을 출력해낼 수 있었다.
<medium>
미디엄단계에서 똑같이 쳐보니까 alert창을 가져올 수 없었다. 그래서 코드를 살펴보니까
security_level값이 0인 low단계에서는 그대로 가져오지만 medium에서부터 xss_check함수를 사용한다. xss_check_4를 살펴보면
addslashes함수가 있었고 이에 대한 설명을 읽어보면 싱글 및 더블 따옴표, 백슬래쉬와 null 앞에 백슬래쉬가 추가된다고 한다. 이것을 우회하는 방법을 찾아보니까 ` 를 사용하면 된다고 한다. 이를 토대로 `를 따옴표대신 사용해보니까
근데 궁금한게 alert()끝에 ; 붙이고 </script>를 붙이는 이유
원하는 팝업창을 띄울 수 있었다. 그리고 마찬가지로 확인을 누르면 아래 사진과 마찬가지로 welcome success문도 띄울 수 있었다.
<high>
하이레벨인 case2에선 xss_check_3이 사용된다. 마찬가지로 xss_check_3 함수를 살펴보니까 앞에서 계속 나온 내용으로 htmlspecialchars로 특수문자를 필터링하므로 우회해서 공격해도 인식이 안되어서 원하는 결과를 얻지 못한다.
post 방식
get방식과 post 방식 차이점
: get 방식은 값을 주로 url에 담아서 전달되지만 post 방식은 html form 형식으로 주로 많이 전달된다. get은 간단한 정보를, post 방식은 중요한 정보를 다룰 때 주로 사용된다.
<low>
먼저 웹 상에서 값을 입력하고 burp suite에서 확인해보니 아래에 firstname과 lastname이 들어가는 줄이 생겼음을 확인할 수 있다. 그래서 burp suite에 <script>alert("XSS")</script>와 success를 입력했더니
원하는 팝업창을 띄울 수 있었다.
<medium>
사용자의 쿠키값을 경고창에 출력하는 것이 문제이다.
사용자의 쿠키정보는 document.cookie에 저장되어 있다. 여기에 저장된 내용을 alert함수에 넣는다면 출력할 수 있을 거라는 것을 힌트를 통해서 감을 잡고나서
firstname에는 <script>alert(document.cookie)와 lastname에는 success를 입력했더니
쿠키값과 medium단계인 security_level=1도 얻을 수 있었다.