반응형

문제 링크

https://x55.is/brutelogic/lab/inside-handler.php?p=dddd

 

목표 & 사용 도구

목표: alert 함수를 통해 경고창을 화면에 띄우는 것을 목표로 합니다. 

 

사용도구: 개발자 도구

 

문제 풀이  -  https://x55.is/brutelogic/lab/inside-handler.php?p=dddd

  • p 파라미터에 임의의 값을 입력하고 페이지에 접속해 보면 콘솔을 확인하라고 나옵니다. 개발자 도구 콘솔 탭에 들어가면 파라미터에 입력한 값이 콘솔 탭에 출력되고 있는 것을 볼 수 있습니다. 

 

  • p 파라미터 값에 특수문자 4개 <, ', ", >를 삽입하여 접속한 뒤 콘솔 탭에서 결과를 확인해 보면 싱글 쿼터, 더블 쿼터가 필터링 되어 출력이 되지 않고 있는 것을 알 수 있습니다.

 

  • 추가로 Elements 탭에서 코드를 확인해 보면 이벤트 속성인 onload가 있고 입력 값이 doSomething이라는 함수의 인자 값으로 들어가고 있는 것을 볼 수 있습니다. 

 

  • 해당 문제는 HTML 파서, JS 엔진에 작동 방식을 이용하여 해당 문제를 풀 수 있습니다. HTML 파서는 파싱 단계에서 HTML Entity를 만나게 되면 HTML Entity가 의미하는 문자로 변환하며 JS 엔진에서는 변환된 결과를 가지고 문법을 처리하게 됩니다.
HTML 파서 입장 : &#x0027 (HTML Entity - hex)을 보고 HTML Entity에 해당하는 문자인 싱글 쿼터  '  로  변환함.

JS 엔진 입장 :  '  을 가지고 문법 처리 

+) HTML Entity 치환 방식은 여러 개가 존재하며 현재 치환방식은 16진수(hex)로 치환한 방식입니다. 다른 HTML Entity 치환 방식을 사용해도 괜찮습니다.


HTML 파서

dddd&#x0027

JS 엔진 

dddd'

 

  • p 파라미터에 HTML Entity로 &#x0027(hex)을 입력해 보고 콘솔 탭에 들어가 보면 문법 에러가 뜨며 사용자의 입력 값으로 코드에 영향을 미치고 있는 것을 볼 수가 있습니다. 

(* &#x0027에서  &  ,  #  기호는 각각 파라미터 구분자와 프래그먼트 식별자로 의미가 있는 있는 기호이기 때문에 URL 인코딩을 통해 해당 기호들을 바꿔서 입력해 줘야 합니다. 바꿔주지 않으면 &#x0027으로 인식하지 못합니다. &#x0027 -> %26%23x0027)

 

  • 따라서 HTML 파서와 JS 엔진 동작 방식을 이용하여 XSS 공격을 시도할 수 있습니다.

[페이로드(입력 값)]

페이로드: dddd%26%23x0027);alert(1);// 또는 dddd%26%23x0027);alert(1);x=('


<body onload="doSomething('___입력 값___')">


<!-- 주석을 이용하여 싱글 쿼터, 닫는 괄호 처리 -->
<body onload="doSomething('dddd%26%23x0027);alert(1);// ')">

<!-- 더미 속성을 이용해서 싱글 쿼터, 닫는 괄호 처리-->
<body onload="doSomething('dddd%26%23x0027);alert(1);x=('')">

*** 마지막에 한 줄 주석 처리(//) 또는 더미 속성을 해주지 않는다면 마지막에 싱글 쿼터('), 닫는 괄호가 남기 때문에 문법 에러가 발생하여 alert 함수가 동작하지 않습니다.

 

  • 주석 처리를 이용한 페이로드를 입력합니다.

 

  • 결과를 확인해 보면 삽입된 스크립트가 정상 작동하여 경고 창을 성공적으로 띄우며 XSS(RXSS) 공격에 성공했음을 확인할 수 있습니다.

 

  • 더미 속성을 이용한 페이로드를 입력합니다.

 

  • 결과를 확인해 보면 삽입된 스크립트가 정상 작동하여 경고 창을 성공적으로 띄우며 XSS(RXSS) 공격에 성공했음을 확인할 수 있습니다.

 

반응형
반응형

문제 링크

https://x55.is/brutelogic/xss.php?c1=test

https://x55.is/brutelogic/xss.php?c2=test

https://x55.is/brutelogic/xss.php?c3=test

https://x55.is/brutelogic/xss.php?c4=test

https://x55.is/brutelogic/xss.php?c5=test

https://x55.is/brutelogic/xss.php?c6=test

 

목표 & 사용 도구

목표: alert 함수를 통해 경고창을 화면에 띄우는 것을 목표로 합니다. 

 

사용도구: Burp Suite

 

문제 풀이 - https://x55.is/brutelogic/xss.php?c1=test

  • 문제 페이지에 접속하여 c1 파라미터에 임의의 값을 삽입하고 Burp Suite를 통해 요청, 응답 데이터를 확인합니다. 삽입한 값이 script 태그 내부 c1 변수의 값으로 들어가고 있는 것을 확인합니다.

 

  • c1 파라미터 값에 특수문자 4개 <, ', ", >를 삽입하여 요청을 보냅니다. 그 후 응답 결과를 확인해 보면 싱글쿼터가 필터링되어 사용할 수 없음을 알 수 있습니다. 

 

  • 꺾쇠 기호가 필터링 되어 있지 않고 스크립트 내부에 접근이 가능하기 때문에 script 태그를 닫고 다시 script 태그를 삽입하여 XSS 공격을 시도할 수 있습니다. 

[페이로드(입력 값)]

페이로드: dddd</script><script>alert("1");</script><script>

페이로드 마지막에 <script>를 해줬던 이유는 기존에 있던 script 태그의 닫는 태그가 남기 때문에 정상적으로 script 태그를 닫기 위해서입니다. 

<script> // 기존 script 태그
  ~~~~
</script> // 페이로드에 입력된 script 태그

<script> // 페이로드에 입력된 script 태그
  dddd</script><script>alert('1');</script><script>
</script> // 페이로드에 입력된 script 태그


<script>  // 페이로드에 입력된 script 태그

</script>  // 기존 script 태그

*** 마지막에 <script>를 해주지 않는다면  다음과 같이 script 태그 내의 내용들이 텍스트로 화면에 출력되게 됩니다.
(alert 함수는 정상 작동합니다.)


 

  • Response를 보면 스크립트가 삽입된 것을 볼 수 있습니다.

 

  • 삽입된 스크립트가 정상적으로 실행되는지 확인하기 위해 스크립트가 삽입된 URL 그대로 복사하여 주소창에 입력하여 접속합니다.

 

  • 결과를 확인해 보면 삽입된 스크립트가 정상 작동하여 경고 창을 성공적으로 띄우며 XSS(RXSS) 공격에 성공했음을 확인합니다.

 

(참고) 경고 창을 닫고 페이지를 확인해 보면 페이로드 마지막에 해줬던 <script> 가 있었기에 정상적으로 script 태그가 닫히면서 내용들이 텍스트로 화면에 출력되지 않고 있는 것을 볼 수 있습니다.

 

 

문제 링크 - https://x55.is/brutelogic/xss.php?c2=test

  • 문제 페이지에 접속하여 c2 파라미터에 임의의 값을 삽입하고 Burp Suite를 통해 요청, 응답 데이터를 확인합니다. 삽입한 값이 script 태그 내부 c2 변수의 값으로 들어가고 있는 것을 확인합니다.

 

  • c2 파라미터 값에 특수문자 4개 <, ', ", >를 삽입하여 요청을 보냅니다. 그 후 응답 결과를 확인해 보면 더블 쿼터가 필터링 되어 사용할 수 없음을 알 수 있습니다. 

 

  • 꺾쇠 기호가 필터링 되지 않고 스크립트 내부에 접근이 가능한 경우 script 태그를 닫고 다시 script 태그를 삽입하여 XSS 공격을 시도할 수 있습니다. 

[페이로드(입력 값)]

dddd</script><script>alert('1');</script><script>

페이로드 마지막에 <script>를 해줬던 이유는 기존에 있던 script 태그의 닫는 태그가 남기 때문에 정상적으로 script 태그를 닫기 위해서입니다. 

<script> // 기존 script 태그
  ~~~~
</script> // 페이로드에 입력된 script 태그

<script> // 페이로드에 입력된 script 태그
   dddd</script><script>alert('1');</script><script>
</script> // 페이로드에 입력된 script 태그


<script>  // 페이로드에 입력된 script 태그

</script>  // 기존 script 태그

*** 마지막에 <script>를 해주지 않는다면  다음과 같이 script 태그 내의 내용들이 텍스트로 화면에 출력되게 됩니다.
(alert 함수는 정상 작동합니다.)

*(참고 자료)

 

  • Response를 보면 스크립트가 삽입된 것을 볼 수 있습니다.

 

  • 삽입된 스크립트가 정상적으로 실행되는지 확인하기 위해 스크립트가 삽입된 URL 그대로 복사하여 주소창에 입력하여 접속합니다.

 

  • 결과를 확인해 보면 삽입된 스크립트가 정상 작동하여 경고 창을 성공적으로 띄우며 XSS(RXSS) 공격에 성공했음을 확인합니다.

 

 

문제 링크 - https://x55.is/brutelogic/xss.php?c3=test

  • 문제 페이지에 접속하여 c3 파라미터에 임의의 값을 삽입하고 Burp Suite를 통해 요청, 응답 데이터를 확인합니다. 삽입한 값이 script 태그 내부 c3 변수의 값으로 들어가고 있는 것을 확인합니다.

 

  • c3 파라미터 값에 특수문자 4개 <, ', ", >를 삽입하여 요청을 보냅니다. 그 후 응답 결과를 확인해 보면 < 기호가 필터링 되어 사용할 수 없음을 알 수 있습니다. 따라서 HTML 태그 기능을 사용할 수 없기 때문에 앞서 두 문제처럼 스크립트 태그를 닫고 다시 스크립트 태그를 삽입하면서 XSS 공격을 할 수 없게 됩니다.

 

  • 태그 기능을 사용할 수 없지만 싱글 쿼터나 더블 쿼터는 사용을 할 수 있습니다. 변수의 값이 싱글 쿼터로 감싸져있기 때문에 문법에 맞게 싱글 쿼터를 이용하면서 한 줄 주석 처리도 가능한지 확인해 봅니다. 주석 처리가 정상적으로 작동하며 변수를 벗어나 script 태그 내부에 사용자의 입력 값 삽입이 가능하다는 것을 알 수 있습니다.(주석 처리하는 이유는 뒤에 있습니다.)

* Response를 보게 되면 주석 처리된 부분은 색깔이 약간 다른 것을 볼 수 있습니다.

 

  • 한 줄 주석 처리가 가능하고 싱글 쿼터를 이용할 수 있기 때문에 script 태그 내부에 사용자가 입력한 값을 삽입할 수 있게 됩니다. 페이로드를 참고해 보면 다음과 같습니다.

[페이로드(입력 값)]

페이로드: dddd';alert('1');//test

싱글 쿼터('), 세미콜론(;)을 이용하여 변수를 벗어나 script 태그 내부에 사용자의 입력 값이 삽입될 수 있습니다.

[코드 예시]
<script> // script 태그
  ~~~~

  
  var c3 = '__입력 값___';  // 페이로드 입력 전

  var c3 = 'dddd'; // 페이로드 입력 후
  alert('1');
  //test
'; 

</script>  // script 태그

*** 마지막에 한 줄 주석 처리(//)를 해주지 않는다면 마지막에 싱글 쿼터('), 세미콜론(;)이 남으며 문법 에러가 발생하기 때문에 alert 함수가 동작하지 않습니다.

 

  • Response를 보면 스크립트가 삽입된 것을 볼 수 있습니다.

 

  • 삽입된 스크립트가 정상적으로 실행되는지 확인하기 위해 스크립트가 삽입된 URL 그대로 복사하여 주소창에 입력하여 접속합니다.

 

  • 결과를 확인해 보면 삽입된 스크립트가 정상 작동하여 경고 창을 성공적으로 띄우며 XSS(RXSS) 공격에 성공했음을 확인합니다.

 

 

문제 링크 - https://x55.is/brutelogic/xss.php?c4=test

  • 문제 페이지에 접속하여 c4 파라미터에 임의의 값을 삽입하고 Burp Suite를 통해 요청, 응답 데이터를 확인합니다. 삽입한 값이 script 태그 내부 c4 변수의 값으로 들어가고 있는 것을 확인합니다.

 

  • c4 파라미터 값에 특수문자 4개 <, ', ", >를 삽입하여 요청을 보냅니다. 그 후 응답 결과를 확인해 보면 < 기호가 필터링 되어 사용할 수 없음을 알 수 있습니다. 따라서 HTML 태그 기능을 사용할 수 없기 때문에 script 태그를 닫고 다시 script 태그를 삽입하면서 XSS 공격을 할 수 없게 됩니다.

 

  • 태그 기능을 사용할 수 없지만 싱글 쿼터나 더블 쿼터는 사용을 할 수 있습니다. 변수의 값이 더블 쿼터로 감싸져있기 때문에 문법에 맞게 더블 쿼터를 이용하면서 한 줄 주석 처리도 가능한지 확인해 봅니다. 결과를 보면 주석 처리가 정상적으로 작동하며 변수를 벗어나 script 태그 내부에 사용자의 입력 값 삽입이 가능하다는 것을 알 수 있습니다.(주석 처리하는 이유는 뒤에 있습니다.)

* Response를 보면 주석 처리된 부분은 색깔이 약간 다른 것을 볼 수 있습니다.

 

  • 한 줄 주석 처리가 가능하고 더블 쿼터를 이용할 수 있기 때문에 script 태그 내부에 사용자가 입력한 값을 삽입할 수 있게 됩니다. 페이로드를 참고해 보면 다음과 같습니다.

[페이로드(입력 값)]

페이로드: dddd";alert('1');//test

싱글 쿼터('), 세미콜론(;)을 이용하여 변수를 벗어나 script 태그 내부에 사용자의 입력 값이 삽입될 수 있습니다.

[코드 예시]
<script> // script 태그
  ~~~~

  
  var c3 = '__입력 값___';  // 페이로드 입력 전

  var c3 = 'dddd"; // 페이로드 입력 후
  alert('1');
  //test
'; 

</script>  // script 태그

*** 마지막에 한 줄 주석 처리(//)를 해주지 않는다면 마지막에 싱글 쿼터('), 세미콜론(;)이 남으며 문법 에러가 발생하기 때문에 alert 함수가 동작하지 않습니다.

 

  • Response를 보면 스크립트가 삽입된 것을 볼 수 있습니다.

 

  • 삽입된 스크립트가 정상적으로 실행되는지 확인하기 위해 스크립트가 삽입된 URL 그대로 복사하여 주소창에 입력하여 접속합니다.

 

  • 결과를 확인해 보면 삽입된 스크립트가 정상 작동하여 경고 창을 성공적으로 띄우며 XSS(RXSS) 공격에 성공했음을 확인합니다.

 

 

문제 링크 - https://x55.is/brutelogic/xss.php?c5=test

  • 문제 페이지에 접속하여 c5 파라미터에 임의의 값을 삽입하고 Burp Suite를 통해 요청, 응답 데이터를 확인합니다. 삽입한 값이 script 태그 내부 c5 변수의 값으로 들어가고 있는 것을 확인합니다.

 

  • c4 파라미터 값에 특수문자 4개 <, ', ", >를 삽입하여 요청을 보냅니다. 그 후 응답 결과를 확인해 보면 < 기호가 필터링 되어 사용할 수 없음을 알 수 있습니다. 또한 싱글 쿼터 앞에  \ ( ₩ )  기호가 붙으며 escape 처리가 되고 있는 것을 알 수 있습니다.
* escape: 특수 기능을 가진 문자를 문자 그대로 사용하도록 해주는 것을 말합니다.

 

  • escape 처리해 주는 \ 기호를 삽입하고 Response를 확인합니다. Response를 확인하면 원래 변수의 값이 싱글 쿼터로 감싸지며 감싸진 내부가 문자열로 인식 되도록 해야 하는데 싱글 쿼터가 그냥 문자로 인식되면서 문법이 파괴된 것을 볼 수 있습니다.

 

  • 이번엔 escape 처리 문자를 escape 처리했을 때 Response를 확인합니다. Response를 보면 escape 문자가 escape 처리되어 그냥 문자로 인식되었고 이로 인해 싱글 쿼터가 변수의 값을 정상적으로 감싸며 문법이 파괴되지 않은 것을 볼 수 있습니다.

 

[추가 설명]

입력: dddd\
출력: var c5 = 'dddd\'; // 문자열이 싱글 쿼터로 감싸져야 하는데 escape 처리로 맨 뒤 싱글 쿼터가 그냥 문자로 인식되며 문법 파괴.

입력: dddd\\
출력: var c5 = 'dddd\\'; // escape 처리 문자를 escape 처리하면 escape 문자가 그냥 문자로 쓰였기에 맨 마지막 싱글 쿼터에는 아무                                        // 영향이 없음

 

  • 한 줄 주석 처리가 가능하고 싱글 쿼터를 escape 문자로 우회하여 이용할 수 있기 때문에 script 태그 내부에 사용자가 입력한 값을 삽입할 수 있게 됩니다. 페이로드를 참고해 보면 다음과 같습니다.

[페이로드(입력 값)]

페이로드: dddd\';alert("1");//

사용자가 싱글 쿼터(')를 사용하면 앞에 escape 문자인 \ ( ₩ ) 기호가 앞에 생기게 됩니다. 이로 인해 사용자가 싱글 쿼터를 사용해 변수를 벗어나며 스크립트를 삽입할 수 없게 됩니다. 하지만 사용자가 싱글 쿼터 입력전에 escape 문자를 입력하게 된다면  \\'  이 되면서 싱글 쿼터를 escape 처리하는 문자가 싱글 쿼터 전에 입력했던 escape 처리 문자로 인해 escape 처리 문자로서의 기능이 없어져 싱글 쿼터를 사용할 수 있게 됩니다.

 \  : escape 기능 수행
 \  : 그냥 \ 기호 (escape 처리되어 escape 기능을 상실함.)
 '  : 변수의 값을 감싸는 싱글 쿼터로 인식됨.

[코드 예시]
<script> // script 태그
  ~~~~

  
  var c5 = '__입력 값___';  // 페이로드 입력 전

  var c5 = 'dddd\'; // 페이로드 입력 후
  alert("1");
  //
'; 

</script>  // script 태그

*** 마지막에 한 줄 주석 처리(//)를 해주지 않는다면 마지막에 싱글 쿼터('), 세미콜론(;)이 남으며 문법 에러가 발생하기 때문에 alert 함수가 동작하지 않습니다.

 

  • Response를 보면 스크립트가 삽입된 것을 볼 수 있습니다.

 

  • 삽입된 스크립트가 정상적으로 실행되는지 확인하기 위해 스크립트가 삽입된 URL 그대로 복사하여 주소창에 입력하여 접속합니다.

 

  • 결과를 확인해 보면 삽입된 스크립트가 정상 작동하여 경고 창을 성공적으로 띄우며 XSS(RXSS) 공격에 성공했음을 확인합니다.

 

 

문제 링크 - https://x55.is/brutelogic/xss.php?c6=test

  • 문제 페이지에 접속하여 c6 파라미터에 임의의 값을 삽입하고 Burp Suite를 통해 요청, 응답 데이터를 확인합니다. 삽입한 값이 script 태그 내부 c6 변수의 값으로 들어가고 있는 것을 확인합니다.

 

  • c6 파라미터 값에 특수문자 4개 <, ', ", >를 삽입하여 요청을 보냅니다. 그 후 응답 결과를 확인해 보면 < 기호가 필터링 되어 사용할 수 없음을 알 수 있습니다. 또한 더블 쿼터 앞에  \ ( ₩ )  기호가 붙으며 escape 처리가 되고 있는 것을 알 수 있습니다.

 

  • escape 처리해 주는 \ 기호를 삽입하고 Response를 확인합니다. Response를 확인하면 원래 변수의 값이 싱글 쿼터로 감싸지며 감싸진 내부가 문자열로 인식 되도록 해야 하는데 싱글 쿼터가 그냥 문자로 인식되면서 문법이 파괴된 것을 볼 수 있습니다.

 

  • 이번엔 escape 처리 문자를 escape 처리했을 때 Response를 확인합니다. Response를 보면 escape 문자가 escape 처리되어 그냥 문자로 인식되었고 이로 인해 더블 쿼터가 변수의 값을 정상적으로 감싸며 문법이 파괴되지 않은 것을 볼 수 있습니다.

 

  • 한 줄 주석 처리가 가능하고 더블 쿼터를 escape 문자를 이용해 우회하여 이용할 수 있기 때문에 script 태그 내부에 사용자가 입력한 값을 삽입할 수 있게 됩니다. 페이로드를 참고해 보면 다음과 같습니다.

[페이로드(입력 값)]

페이로드: dddd\";alert('1');//

사용자가 더블 쿼터(")를 사용하면 앞에 escape 문자인 \ ( ₩ ) 기호가 앞에 생기게 됩니다. 이로 인해 사용자가 더블 쿼터를 사용해 변수를 벗어나며 스크립트를 삽입할 수 없게 됩니다. 하지만 사용자가 싱글 쿼터 입력전에 escape 문자를 입력하게 된다면  \\'  이 되면서 더블 쿼터를 escape 처리하는 문자가 더블 쿼터 전에 입력했던 escape 처리 문자로 인해 escape 처리 문자로서의 기능이 없어져 더블 쿼터를 사용할 수 있게 됩니다.

 \  : escape 기능 수행
 \  : 그냥 \ 기호 (escape 처리 되어 escape 기능을 상실함.)
 "  : 변수의 값을 감싸는 더블 쿼터로 인식됨.

[코드 예시]
<script> // script 태그
  ~~~~

  
  var c5 = '__입력 값___';  // 페이로드 입력 전

  var c5 = 'dddd\"; // 페이로드 입력 후
  alert('1');
  //
'; 

</script>  // script 태그

*** 마지막에 한 줄 주석 처리(//)를 해주지 않는다면 마지막에 싱글 쿼터('), 세미콜론(;)이 남으며 문법 에러가 발생하기 때문에 alert 함수가 동작하지 않습니다.

 

  • Response를 보면 스크립트가 삽입된 것을 볼 수 있습니다.

 

  • 삽입된 스크립트가 정상적으로 실행되는지 확인하기 위해 스크립트가 삽입된 URL 그대로 복사하여 주소창에 입력하여 접속합니다.

 

  • 결과를 확인해 보면 삽입된 스크립트가 정상 작동하여 경고 창을 성공적으로 띄우며 XSS(RXSS) 공격에 성공했음을 확인합니다.

반응형
반응형

문제 링크

https://x55.is/brutelogic/xss.php?b1=test

https://x55.is/brutelogic/xss.php?b2=test

https://x55.is/brutelogic/xss.php?b3=test

https://x55.is/brutelogic/xss.php?b4=test

 

 

목표 & 사용 도구

목표: alert 함수를 통해 경고창을 화면에 띄우는 것을 목표로 합니다. 

 

사용도구: Burp Suite

 

 

문제 풀이 - https://x55.is/brutelogic/xss.php?b1=test

  • 문제 페이지에 접속하여 b1 파라미터에 임의의 값을 삽입하고 Burp Suite를 통해 요청, 응답 데이터를 확인합니다. 삽입한 값이 input 태그 value에 들어가고 있는 것을 확인합니다.

 

  • b1 파라미터 값에 특수문자 4개 <, ', ", >를 삽입하여 요청을 보냅니다. 그 후 응답 결과를 확인해 보면 특수문자 전부 별다른 필터링이 적용되지 않기 때문에 HTML과 Javascript를 이용하여 스크립트를 삽입할 수 있다는 것을 의미합니다.

 

  • 이전 응답 결과를 확인해 보면 특수문자를 이용해서 input 태그를 닫을 수 있음을 알 수 있습니다. 문법에 맞춰서 input 태그를 강제로 닫고 스크립트(페이로드)를 삽입합니다. 응답 결과를 보면 스크립트가 삽입된 것을 볼 수 있습니다.

[페이로드(입력 값)]

dddd"><script>alert('1');</script><"

* input 태그의 value 속성의 값이 더블 쿼터로 감싸져있기 때문에 이를 주의하여 input 태그를 닫고 스크립트를 삽입해야 합니다.

 

  • 삽입된 스크립트가 정상적으로 실행되는지 확인하기 위해 스크립트가 삽입된 URL 그대로 복사하여 주소창에 입력하여 접속합니다.

 

  • 결과를 확인해 보면 삽입된 스크립트가 정상 작동하여 경고 창을 성공적으로 띄우며 XSS(RXSS) 공격에 성공했음을 확인합니다.

 

 

문제 풀이 - https://x55.is/brutelogic/xss.php?b2=test

  • 문제 페이지에 접속하여 b2 파라미터에 임의의 값을 삽입하고 Burp Suite를 통해 요청, 응답 데이터를 확인합니다. 삽입한 값이 input 태그 value 속성 값에 들어가고 있는 것을 확인합니다.

 

  • b2 파라미터 값에 특수문자 4개 <, ', ", >를 삽입하여 요청을 보냅니다. 그 후 응답 결과를 확인해 보면 특수문자 전부 별다른 필터링이 적용되지 않기 때문에 HTML과 Javascript를 이용하여 스크립트를 삽입할 수 있다는 것을 의미합니다.

 

  • 이전 응답 결과를 확인해 보면 특수문자를 이용해서 input 태그를 닫을 수 있음을 알 수 있습니다. 문법에 맞춰서 input 태그를 강제로 닫고 스크립트(페이로드)를 삽입합니다. 응답 결과를 보면 스크립트가 삽입된 것을 볼 수 있습니다 

[페이로드(입력 값)]

dddd'><script>alert('1');</script><'

* input 태그의 value 속성의 값이 싱글 쿼터로 감싸져있기 때문에 이를 주의하여 input 태그를 닫고 스크립트를 삽입해야 합니다.

 

  • 삽입된 스크립트가 정상적으로 실행되는지 확인하기 위해 스크립트가 삽입된 URL 그대로 복사하여 주소창에 입력하여 접속합니다.

 

  • 결과를 확인해 보면 삽입된 스크립트가 정상 작동하여 경고 창을 성공적으로 띄우며 XSS(RXSS) 공격에 성공했음을 확인할 수 있습니다.

 

 

문제 풀이 - https://x55.is/brutelogic/xss.php?b3=test

  • 문제 페이지에 접속하여 b3 파라미터에 임의의 값을 삽입하고 Burp Suite를 통해 요청, 응답 데이터를 확인합니다. 삽입한 값이 input 태그 value 속성 값에 들어가고 있는 것을 확인합니다.

 

  • b3 파라미터 값에 특수문자 4개 <, ', ", >를 삽입하여 요청을 보냅니다. 그 후 응답 결과를 확인해 보면 > 기호가 필터링 되고 있는 것을 볼 수 있으며 HTML 태그를 닫는 용도로 > 기호를 사용하지 못한다는 것을 알 수 있습니다. 

 

  • 필터링으로 인해 input 태그를 강제로 닫고 스크립트 삽입이 불가능하므로 이를 우회해야 합니다. 우회 방법은 여러 가지 있지만 해당 문제에서는 onfocus + autofocus를 이용하여 우회를 시도합니다. 

[페이로드(입력 값)]

dddd"+autofocus+onfocus=alert('1')+x="


autofocus : 페이지가 로드되면 특정 요소에 자동으로 포커스를 줍니다.
onfocus : 요소가 포커스를 얻으면 실행되는 이벤트 핸들러입니다.

정리하면 해당 페이로드가 삽입된 URL로 접속하게 된다면 autofocus로 인해 자동으로 포커스를 주고 onfocus에 의해 alert 함수가 실행됩니다. 따라서 별다른 행위를 하지 않아도 바로 스크립트가 실행됩니다.

+) x=" 을 해준 이유는 페이로드를 삽입하고 더블쿼터(")가 하나 남게 되어 문법이 맞지 않게 됩니다. 따라서 문법을 맞춰주기 위해 페이로드에 함께 삽입하여 줍니다.

 

  • 삽입된 스크립트가 정상적으로 실행되는지 확인하기 위해 스크립트가 삽입된 URL 그대로 복사하여 주소창에 입력하여 접속합니다.

 

  • 결과를 확인해 보면 삽입된 스크립트가 정상 작동하여 경고 창을 성공적으로 띄우며 XSS(RXSS) 공격에 성공했음을 확인할 수 있습니다.

 

 

문제 풀이 - https://x55.is/brutelogic/xss.php?b4=test

  • 문제 페이지에 접속하여 b4 파라미터에 임의의 값을 삽입하고 Burp Suite를 통해 요청, 응답 데이터를 확인합니다. 삽입한 값이 input 태그 value 속성 값에 들어가고 있는 것을 확인합니다.

 

    • b4 파라미터 값에특수문자 4개 <, ', ", >를 삽입하여 요청을 보냅니다. 그 후 응답 결과를 확인해 보면 > 기호가 필터링 되고 있는 것을 볼 수 있으며 HTML 태그를 닫는 용도로 > 기호를 사용하지 못한다는 것을 알 수 있습니다. 

 

  • 필터링으로 인해 input 태그를 강제로 닫고 스크립트 삽입이 불가능하므로 이를 우회해야 합니다. 해당 문제에서는 onfocus + autofocus를 이용하여 우회를 시도합니다. 

[페이로드(입력 값)]

dddd'+autofocus+onfocus=alert('1')+x='


autofocus : 페이지가 로드되면 특정 요소에 자동으로 포커스를 줍니다.
onfocus : 요소가 포커스를 얻으면 실행되는 이벤트 핸들러입니다.

정리하면 해당 페이로드가 삽입된 URL로 접속하게 된다면 autofocus로 인해 자동으로 포커스를 주고 onfocus에 의해 alert 함수가 실행됩니다. 따라서 별다른 행위를 하지 않아도 바로 스크립트가 실행됩니다.

+) x=' 을 해준 이유는 페이로드를 삽입하고 싱글쿼터(')가 하나 남게 되어 문법이 맞지 않게 됩니다. 따라서 문법을 맞춰주기 위해 페이로드에 함께 삽입하여 줍니다.

 

  • 삽입된 스크립트가 정상적으로 실행되는지 확인하기 위해 스크립트가 삽입된 URL 그대로 복사하여 주소창에 입력하여 접속합니다.

 

  • 결과를 확인해 보면 삽입된 스크립트가 정상 작동하여 경고 창을 성공적으로 띄우며 XSS(RXSS) 공격에 성공했음을 확인할 수 있습니다.

반응형
반응형

문제 링크

https://x55.is/brutelogic/xss.php?a=test 

 

목표 & 사용 도구

목표: alert 함수를 통해 경고창을 화면에 띄우는 것을 목표로 합니다. 

 

사용도구: Burp Suite

 

문제 풀이 - https://x55.is/brutelogic/xss.php?a=test 

  • 문제 페이지에 접속하면 a 파라미터에 입력한 값이 화면에 출력되는 것을 확인할 수 있습니다. 

 

  • Burp Suite를 이용하여 a 파라미터 값에 특수문자 4개 <, ', ", >를 삽입하여 요청을 보냅니다. 그 후 응답 결과를 확인해 보면 특수문자 전부 별다른 필터링이 적용되지 않기 때문에 HTML과 javscript를 이용하여 스크립트를 삽입할 수 있다는 것을 의미합니다.

 

  • a 파라미터에 스크립트(페이로드)를 삽입하여 요청 데이터를 보낸 뒤 응답 결과를 확인해 보면 스크립트가 삽입된 것을 확인합니다.

 

  • 스크립트가 제대로 동작하는지 확인하기 위해 스크립트가 삽입된 URL 그대로 복사하여 주소창에 입력하여 접속합니다.

 

  • 결과를 확인해 보면 삽입된 스크립트가 정상작동하여 경고 창을 성공적으로 띄우며 XSS 공격에 성공했음을 확인합니다.

 

반응형

+ Recent posts