DreamHack

DreamHack 2단계 csrf-1

jhyuxxk 2021. 8. 3. 16:48

DreamHack 2단계 csrf-1 문제를 풀어보겠다.

 

CSRF 문제
문제 파일

 

문제 파일

 

접속 화면

접속을 하면 네 페이지가 나오는데,

vuln(csrf) page 화면

vuln 함수에서 script 문이 * 로 필터링 된다는 것을 볼 수 있다.

 

memo 화면

memo 함수는 flag 에 입력한 값이 성공시 출력되는  페이지이다.

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

 

notice flag 화면

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

 

flag 화면

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

 

이렇게, 각각의 페이지를 확인할 수 있다.

 

 

read_url 화면

read_url 함수를 보면 이 함수에서 쿠키가 생성되고, domain 이 127.0.0.1:8000 이다.

우리가 제공받은 주소와 포트도 다르기 때문에 쿠키 값에는 저장되어 있지 않다.

 

따라서 127.0.0.1:8000 에서 확인을 해야한다.

 

check_csrf 함수 화면

check_csrf 함수를 보면 입력한 URL 을 참조하는 것을 알 수 있다.

 

/admin/notice_flag 함수 화면

memo 에 flag 를 작성하는 기능인 것을 알 수 있다.

/admin/notice_flag 함수를 보면, 127.0.0.1 로 접속하지 않으면 Access Denied 이고, userid 가 admin 이 아니면 Access Denied 2 메시지가 출력된다는 것을 볼 수 있다.

 

 

그리고 memo 에 flag 값이 출력되는 것은 global  변수 memo_text 로 된다는 것을 알 수 있다.

 

flag 페이지에서 img src 문 입력 화면

flag 화면에서 입력란에,

<img src="/admin/notice_flag?userid=admin">

라고 입력하면 FLAG 값을 얻을 수 있다.

 

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

이렇게 FLAG 가 출력된다.