[난이도-low]

Quest. Change Secret 페이지에서 XSS 공격 후 SQL Injection(Login From/users) 페이지에서 확인할 수 있습니다.

다음 화면을 출력해보세요. (bee/bug)

 

먼저 New secret에 helloworld를 입력해보았다.

그리고 SQL Injection(Login Form/User) 페이지로 들어가주어 로그인을 해보았다.

 

로그인을 해주었더니 다음과 같은 내용이 출력되었다.

경고창을 띄우기 위하여 Change Secret 부분에 스크립트 태그를 작성하였다. 

 

<입력>

<script>alert("success")</script>

로그인 페이지로 이동하여 로그인을 해주니 아래 사진과 같이 경고창이 떴다.

 

 

Quest. secret을 사용자의 쿠키 정보로 바꿔봅시다.

위와 같은 방식으로 New secret 칸에 아래의 코드를 작성해주었다.

 

<입력>

<script>alert(document.cookie)</script>

 

그리고 로그인 페이지로 이동하여 로그인을 해주었더니 다음과 같은 결과를 얻었다.

 

 

[난이도-high]

Quest. 공격할 수 없습니다. Secret은 두 개의 함수를 이용해 방어하고 있습니다. 함수의 이름을 적어주세요.

Hint1. xss_stored_3.php에서 확인할 수 있습니다.
Hint2. DB에 저장되기 전에 변수를 어떻게 처리하는지 살펴보세요.

  코드를 살펴보면 xss_stored_3.php를 사용하고 있다는 점을 알 수 있다. 또한 난이도 high는 security_level이 2라는 점도 알 수 있다.

 

해당 파일을 살펴본 결과, security_level이 2인 경우, xss_check_3함수를 이용한다는 것을 알 수 있다.

 

xss_check_3함수에 관해 찾아보니 htmlspecialchars함수를 사용하고 있었다. 

 

  또한, mysqli_real_escape_string이라는 함수를 이용해 인자로 들어온 데이터 중 sql injection 공격과 관련된 여러 기호들을 문자로 바꿔누는 것을 확인할 수 있다.

 

따라서 이 두 함수로 인해 해당 문제를 풀 수 없다.

+ Recent posts