Information Security Study

Stage 5 CSRF-1 문제 풀이 본문

Dreamhack/Web Hacking

Stage 5 CSRF-1 문제 풀이

gayeon_ 2022. 9. 25. 21:01

 

 

메인 페이지이다.

 

vuln 페이지다.

 

 

메모페이지다. 여기서 플래그를 확인할 수 있다.

 

 

flag 페이지다.

 

 

 

각 페이지에 대한 코드들이다.

vuln 페이지에서는 입력한 값을 소문자로 변경해 param에 저장한다.

또한 'frame', 'script', 'on' 키워드를 필터링 해주고 있다. (xss 공격 방지)

또한 파람 값을 *로 치환해주고 있다.

 

flag 페이지에서는 get, post 방식으로 접근이 가능하다.

만약 접근 방식이 get일 경우 (클릭해 flag 페이지 접속)

flag.html 페이지를 렌더링해 보여주고

post일 경우 파람을 요청받는다.

코드에서 history.go(-1)은 실행 후 원래 페이지로 돌아간다는 의미이다.

 

 

memo 페이지에서는 memo_text를 전역변수로 참조하고 있다.

또한 이용자가 전송한 메모값을 text로 가져오고 있다.

 

notic_flag 페이지에서도 memo_text를 전역변수로 참조하고 있다.

또한 로컬호스트 주소(127.0.0.1)이거나 userid가 admin이 아닌 경우

접근을 거부한다는 문자열을 출력하고 있다.

위 두개의 상황이 아니라면 플래그를 출력한다.

 

 

 

 

 

vuln 페이지에서 script 태그가 안먹히는 걸 확인해 xss 공격이 통하지 않음을 알 수 있었다.

따라서 script와 유사하게 사용할 수 있는 태그를 이용했다.

 

script 태그를 사용하지 못할 때는 image 태그로도 접근이 가능하다.

 

<img src=””>

이미지 태그의 기본 형식이다.

 

아까 코드에서 userid가 admin일 경우 접근을 허용한다는 점을 알았으니 이를 이용할 것이다.

flag 페이지에서 userid=admin을 notice_flag페이지에 넣어주도록 코드를 작성했다.

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

입력하면 경고창으로 good 이라고 뜬 걸 확인 할 수 있다.

 

 

이후에 memo 페이지에 들어가면

플래그를 확인할 수 있다!

'Dreamhack > Web Hacking' 카테고리의 다른 글

Cookie  (0) 2022.09.29
devtools-sources  (0) 2022.09.26
Session  (0) 2022.07.26
Session-basic  (0) 2022.07.26
error based sql injection  (0) 2022.07.14