2022. 8. 7. 17:15ㆍ22-여름방학/웹 해킹(WEB HACKING)&웹 기초
XSS – Stored (Blog), XSS – Stored (Change Secret)
Cross-Site Scripting – Stored(Blog)
난이도 : low
Quest. 다음 화면과 같이 경고창을 띄워봅시다.
Cross-Site Scripting(Blog)를 선택한다.
<script>alert("success");</script> 를 입력하면 경고창을 띄울 수 있다.
Quest. 사용자의 쿠키 값을 경고창에 띄워봅시다.
Hint1. 사용자의 쿠키값은 document.cookie에 저장되어 있습니다.
<script>alert(document.cookie)</script> 를 입력하면 사용자의 쿠키 값을 경고창에 띄울 수 있다.
Quest. (게시판에 등록된 내용을 삭제하지 않았다면) XSS 공격을 시도할 때마다 경고창이 여러 개가 뜨는 것을 확인했습니다. 왜 그럴까요? 이유를 작성해주세요.
Hint1. Stored XSS 방식에 대해 잘 생각해봅시다.
Hint2. 소스코드를 확인해봅시다. 테이블에 어떻게 저장되어 있나요?
페이지 소스코드를 열어보면 이전에 작성한 <script>태그가 유효한 채로 남아있는 것을 확인할 수 있다.
stored xss는 스크립트가 서버에 저장되어 실행되는 방식이기 때문이다.
난이도 : high
Quest. 공격할 수 없습니다. 이유를 적어주세요.
Hint1. 특수 문자를 막는 함수가 있는 것 같습니다.
Hint2. xss_stored_1.php에서 확인할 수 있습니다.
xss_check_4코드를 확인해보면 특수 문자가 변환되어 저장해서 자바스크립트 코드가 실행되지 않는 것을 확인할 수 있다.
Cross-Site Scripting – Stored (Change Secret)
난이도 : low
Quest. Change Secret 페이지에서 XSS 공격 후 SQL Injection(Login From/users) 페이지에서 확인할 수 있습니다. 다음 화면을 출력해보세요. (bee/bug)
<script>alert(”success”);</script>를 입력하면 change된다.
sql injection(login form/user)로 hack한다.
Quest. secret을 사용자의 쿠키 정보로 바꿔봅시다.
xss-stored(change secret)에서 <script>alert(document.cookie);</script>를 입력하여 change를 한다.
다시 sql injection(login form/user)로 가서 bee bug로 로그인하면 사용자의 쿠키 정보로 바뀌는 것을 확인할 수 있다.
난이도 : high
Quest. 공격할 수 없습니다. Secret은 두 개의 함수를 이용해 방어하고 있습니다. 함수의 이름을 적어주세요.
Hint1. xss_stored_3.php에서 확인할 수 있습니다.
Hint2. DB에 저장되기 전에 변수를 어떻게 처리하는지 살펴보세요.
터미널에서 gedit xss_stored_3.php를 입력해서 파일을 열어본다.
코드를 보면 high인 case 2에 xss_check_3을 사용하는 것을 확인할 수 있다.
gedit functions_external.php를 입력해서 파일을 열어본다.
그 중 함수 xss_check_3를 확인해보면 htmlspecialchars함수를 사용하는 것을 확인할 수 있다.
mysqli_real_escape_string함수가 사용되는 것도 확인할 수 있다.
이 함수들은 string을 특수문자를 필터링하는 함수이다.
'22-여름방학 > 웹 해킹(WEB HACKING)&웹 기초' 카테고리의 다른 글
웹해킹_7주차 정리 (0) | 2022.08.21 |
---|---|
웹해킹_6주차 정리 (0) | 2022.08.14 |
웹기초_5주차 정리 (0) | 2022.08.06 |
웹해킹_4주차 정리 (0) | 2022.07.31 |
웹기초_4주차 정리 (0) | 2022.07.28 |