<문제 링크>
https://dreamhack.io/wargame/challenges/269/
csrf-2
여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. CSRF 취약점을 이용해 플래그를 획득하세요. Reference Client-side Basic
dreamhack.io
<나의 풀이 기록>
1. 소스코드 내 사용자 정보 확인
주어진 소스코드 내용 중 사용자에 대한 정보가 있다.
id/pw가 guest/guest, admin/찾아야 할 flag값인 두 사용자의 정보이다.
이것을 이용해 로그인을 시도해 보기로 했다.
2. admin으로 로그인 위한 pw 알아내기
login에 들어가서 guest/guest로 로그인 한 결과이다.
flag를 획득하려면 admin으로 로그인해야 하는 것 같다.
문제에서 주어진 소스코드 중 아래쪽에 해결의 실마리가 있다.
비밀번호를 변경하는 함수인데, pw값을 받아 pw에 넣고
요청한 클라이언트의 session id를 받아 session_storage에 있는 정보와 비교하는 것으로 보인다.(아닐수도)
3. img 태그 이용해 CSRF 공격 코드 작성, 입력
드림핵 CSRF강의 중 왼쪽과 같은 내용이 있었다.
img나 form태그를 사용해 요청을 보내면 cookie에 이용자의 인증 정보가 포함된다고 한다. 따라서 나는 이 중 img태그를 사용해서 공격하고자 한다.
주어진 웹페이지에서 flag에 들어가서 공격코드를 입력하면 된다.
<img src="/change_password?pw=비밀번호"> 가 내가 사용한 공격코드이다.
id가 admin인 사용자의 pw를 '비밀번호'로 변경하는 코드로,
비밀번호 부분에는 원하는 것을 집어넣으면 된다.
난 id와 똑같이 admin을 넣었다. → <img src="/change_password?pw=admin">
4. 공격 성공, 플래그 획득
공격코드를 입력하고 제출 버튼을 누르면 왼쪽과 같은 창이 뜨며 성공했음을 알 수 있다.
Home으로 돌아와서 보면 admin으로 로그인 되어 플래그를 획득했다.
flag : DH{c57d0dc12bb9ff023faf9a0e2b49e470a77271ef}
<풀이 요약>
1. 소스코드 내 사용자 정보 확인
2. admin으로 로그인 위한 pw 알아내기(change_password())
3. img 태그 이용해 CSRF 공격 코드 작성, flag페이지에서 공격 코드 입력
4. 공격 성공, 플래그 획득
<이 문제를 통해 배운 것>
CSRF 취약점 공격의 기본 원리와 방법
img 태그와 form 태그로 HTTP 요청 전송 시 포함되는 정보
소스코드 분석 통해 CSRF 공격으로 원하는 정보 획득 방법
HTML과 Javascript를 얼른 공부해야겠다. 얼렁뚱땅 대충 해석은 되지만 자세히 이해하지 못해 문제를 해결해도 얻는 것이 적은 것 같다.
'해킹 공부 > 웹 해킹' 카테고리의 다른 글
Dreamhack_command-injection-1 (0) | 2022.02.13 |
---|---|
Dreamhack_csrf-1(CSRF 취약점) (0) | 2022.02.05 |
dreamhack xss-2(XSS 방화벽 우회) (0) | 2022.01.30 |
dreamhack xss-1(XSS 취약점) (0) | 2022.01.30 |
Dreamhack_session-basic(SessionId) (0) | 2022.01.23 |