티스토리 뷰

보안/CTF

[Web] Its Paid - 2021 Tamil CTF Writeup

돔돔이부하 2021. 9. 30. 00:17
728x90
반응형

문제 설명 : I heard that admin leaked something somewhere o.O

다 풀고 나서 알았지만, 단순한 파라미터 값 변조한 것을 서버 단에서 별도로 검증하지 않아서 생긴 문제에 대해 다루고 있습니다. Web 문제 중에선 313점으로 두번째로 많이 풀린 문제였습니다. 

 

위 페이지가 첫 화면이고, Get started 버튼을 누르면 아래와 같은 페이지로 이동합니다.

 

그리고 Buy now 버튼을 눌러서 각 코스 별로 강의를 구매할 수 있는 기능이 나옵니다.

QR 코드를 스캔하라고 하고 있는데 따로 스캔하지는 않았습니다. 저는 QRcode 밑에 있는 20000 숫자가 가격이라고 생각하였고 해당 가격이 적힌 버튼을 눌러보았습니다. 버튼을 눌렀을 때 아래와 같은 payload가 발생하였습니다.

fetch("http://139.177.201.15:5002/get-course-1", {
  "headers": {
    "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
    "accept-language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
    "cache-control": "no-cache",
    "content-type": "application/x-www-form-urlencoded",
    "pragma": "no-cache",
    "upgrade-insecure-requests": "1"
  },
  "referrer": "http://139.177.201.15:5002/buy-1",
  "referrerPolicy": "strict-origin-when-cross-origin",
  "body": "amount=20000",
  "method": "POST",
  "mode": "cors",
  "credentials": "omit"
});

body 부분에 amount 값이 20000 으로 넘어가는 것을 확인할 수 있습니다.

해당 부분을 0으로 변경하고 fetch 함수로 request 요청해보았습니다. 그러면 response 로 html 코드가 반환되는데, 그 중에서 mp4 파일 링크를 확인했습니다.

<h2>Download the course contents <a href="/static/courses/coursessss1.mp4" style="color: rgb(255, 255, 255);text-decoration: none;text-shadow:0 0 2px #fff,0 0 5px #fff,0 0 10px #000000;">Download</a></h2><br><br><br><br>

이 링크가 코스(강의)에 대한 다운로드 링크임을 짐작하고 영상을 재생해보았습니다.

별 다른 내용없는 강의도 있었지만, 8개 모든 영상 강의를 다운로드 하고서 알아낸 것은 그 중에서 하나의 영상이 관리자가 실수로 잘못된 영상을 올렸다는 것을 알게 되었습니다.

 

해당 영상에서는 관리자 본인이 관리자만이 알 수 있는 URL 경로로 접속하는 영상이 녹화되어 있었습니다.

영상에 노출된 그 URL은 아래와 같았습니다.

127.0.0.1:5000/admin?email=admin%40tamilctf&pass=imakepaidcringecourses

/admin 경로로 접속하게 되면 위와 같은 admin 페이지가 나오게 되는데, 이때 username 과 password 로 위에서 노출된 email 과 pass 를 입력하여 접속하게 되면 아래와 같이 나옵니다.

 

이게 뭐지 싶어 쿠키값을 들여다 보았습니다. 특별한 사람들만이 볼 수 있다고 하는데 과연 그랬습니다.

special_person 이라는 쿠키값을 false 에서 true 로 변경하고 새로고침을 해보았습니다.

그랬더니 위와 같이 플래그 값이 나왔습니다.

 

단순히 POST 파라미터 값을 변조할 수 있는 지, 그리고 쿠키값을 확인할 수 있는 지에 대한 문제였던 것 같습니다.

728x90
반응형
댓글