Information Security Study
Stage 5 CSRF-1 문제 풀이 본문
메인 페이지이다.
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 |