영서야 노올자~

영서와 함께라면 어디든 갈 수 있어!

WEB

CSRF-1

yeongsso 2023. 5. 25. 08:05

자격증 준비로 너무 오랜만에 찾아와서 부끄럽지만 뻔뻔한 인사

영서의 문제풀이 (1) !


 

[web]

LEVEL 1 CSRF-1


문제 정보

여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다.

CSRF 취약점을 이용해 플래그를 획득하세요.

 


1.

드랙핵 문제 정보를 확인 후 문제 파일 다운로드를 한다.


2. 

받은 문제 파일의 압축을 풀어준다.


3. 

접속 정보에서 제공하는 URL에 접속한다.


4.

접속을 했을 때 나오는 첫 화면이다.


5.

vuln(csrf) page에 접속할 때 나오는 화면이다.

- vuln(csrf) page의 url 정보를 살펴보면 vuln 함수에서 script 문이 * 로 필터링 되어있음을 볼 수 있다 

- * 로 필텅링하는 이유는 ? xss 공격을 방어하기 위함이다.


6.

memo 에 접속한 화면이다.

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

memo의 url이다.

- 그 이유를 살펴본다면,

  memo 함수에서 이미 hello 라는 문자열이 있기 때문에 쿠키 값이 존재한다고 생각할 수 있다.


7.

notice flag 화면이다.
notice flag의 url이다.

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


8.

flag 화면이다.

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


9.

비주얼 스튜디오를 사용해 압축을 푼 소스코드이다.

- 접근할 수 없었던 notice_flag페이지에 관한 소스코드이다.

- IP 주소가 127.0.0.1(local)이고 userid가 admin이면 memo_text에 플래그를 입력하도록 되어있다.

- /admin/notice_flag


10.

/memo

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


11.

/flag

- flag 페이지에서 사용자가 임의의 값을 입력할 수 있었다.

- 이미지를 요청, HTML 형태를 전송하여, 서버(127.0.0.1)에서 직접 notice_flag 페이지에 접근하도록 하겠다.

- 위의 flag 페이지에서는 쿼리의 param  값을  check_csrf 함수로 처리하고 있다.


12.

check_csrf 함수

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


13.

/vuln

- vuln page에서는 script, frame, on 등 XSS 기법에 사용되는 키워드를 필터링한다.


14.

공격 기법 : FLAG를 얻는 순서

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


15. 

img src 문 입력 후, memo 페이지로 이동한 화면이다.

- 이렇게 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