
영서의 문제풀이 (1) !
[web]
LEVEL 1 CSRF-1
문제 정보
여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다.
CSRF 취약점을 이용해 플래그를 획득하세요.
1.

2.

3.

4.

5.


- vuln(csrf) page의 url 정보를 살펴보면 vuln 함수에서 script 문이 * 로 필터링 되어있음을 볼 수 있다
- * 로 필텅링하는 이유는 ? xss 공격을 방어하기 위함이다.
6.

- memo 함수는 flag에 입력한 값이 성공했을 때 출력되는 페이지이다.

- 그 이유를 살펴본다면,
memo 함수에서 이미 hello 라는 문자열이 있기 때문에 쿠키 값이 존재한다고 생각할 수 있다.
7.


- notice flag 함수는 admin 계정 권한에 속한다는 것을 알 수 있다.
8.

- flag 함수는 스크립 언어를 기입하여 공격하는 페이지 이다.
9.

- 접근할 수 없었던 notice_flag페이지에 관한 소스코드이다.
- IP 주소가 127.0.0.1(local)이고 userid가 admin이면 memo_text에 플래그를 입력하도록 되어있다.
- /admin/notice_flag
10.

- 전역 변수 memo_text의 값은 위 소스코드를 통해 확인할 수 있다.
11.

- flag 페이지에서 사용자가 임의의 값을 입력할 수 있었다.
- 이미지를 요청, HTML 형태를 전송하여, 서버(127.0.0.1)에서 직접 notice_flag 페이지에 접근하도록 하겠다.
- 위의 flag 페이지에서는 쿼리의 param 값을 check_csrf 함수로 처리하고 있다.
12.

- check_csrf 함수에서는 param에서 큰따옴표 안의 내용을 vuln page로 보낸다.
13.

- vuln page에서는 script, frame, on 등 XSS 기법에 사용되는 키워드를 필터링한다.
14.
공격 기법 : FLAG를 얻는 순서

1. /flag의 param 값으로 <img src="/admin/notice_flag?userid=admin">을 입력한다.
15.

- 이렇게 FLAG가 출력된다.
! 성공 !
'WEB' 카테고리의 다른 글
xss-2 (0) | 2023.03.29 |
---|---|
xss-1 (0) | 2023.03.26 |
cookie (0) | 2023.03.21 |
session-basic (0) | 2023.03.21 |
devtools-sources (0) | 2023.03.21 |