LEVEL 3

CProxy: Forge

web
  • 문제 정보
  • 풀이 3
  • 난이도 투표 22
  • 질문 2
  • 최근 풀이자 106
  • 댓글 3
해당 문제는 Dreamhack CTF Season 2 Round #8 에 출제된 문제입니다.

문제 설명

임의 웹사이트로 http 요청을 보내고 응답을 확인할 수 있는 온라인 프록시 서비스 CProxy입니다.

프록시를 통해 내부 API /api/local/flag에 요청을 보내 플래그를 획득하세요!


Note: 모든 CProxy 문제들의 문제 파일과 동작 중인 서비스는 동일합니다.

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

ash3r
워게임 고인물
출제된 지 18분 만에 풀이 완료!

난이도 투표 22

질문 2

문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
도와주세요.. 진짜 모르겠어요..
app.get('/api/local/flag', requireLocal, async (req, res) => { //Cproxy: forge return res.send(await fs.readFile('/flag_forge', { encoding: 'ascii' })); }); const requireLocal = async (req, res, next) => { if (req.socket.remoteAddress === '127.0.0.1') { next(); } else { res.sendStatus(403); } } (https://lock.cmpxchg8b.com/rebinder.html) 위 사이트를 공격에 이용하고 편의상 attack tool이라 부르겠습니다. index.js의 일부 코드입니다. requireLocal 조건을 충족하기 위해서 단순하게 생각하면 /proxy페이지에서 attack tool의 2개의 입력 칸 중 한쪽에는 루프백 주소를 넣고 http://host3.dreamhack.games:(port)에 해당하는 ip를 넣으면 될텐데 이 ip를 직접 넣는건 어렵다고 판단했습니다. 그래서 개인서버 ip를 attack tool의 다른 한 쪽에 넣고 우분투 개인 서버의 페이지에 \<script>location.href=host3.~/api/local/flag를 입력하고 (/proxy) - (내 개인서버 페이지에서 스크립트 실행) - (host3.dreamhack.games)로 redirect 과정으로 추측하고 있는데 개인서버가 반드시 필요한가요? attack tool을 이용해서 공격한다면 반드시 입력되는 ip는 80포트인데, 이럼 또 모순이 생겨버려서 아닌 것 같기도 합니다. 생각한대로 시도해보려고 개인서버 우분투로 포트포워딩 시도했는데, 개인이 80포트를 여는건 어렵다는 것을 알게 되었고, 외부접속도 안되서 헤메다가 질문드립니다.. +)burp suite로 request 과정 하나씩 보다가 REFER: http://210.117../로 드림핵vm ip같아보여서 시도해봤지만 이것도 아닌 것 같네요.. Level 3이면 이렇게 복잡하진 않을 것같은데 말이죠....
avatar zkvlkat

최근 풀이자 106

🚫
대표 업적 없음
가갸고규
대표 업적 없음
bintable
워게임 고인물
허준원
대표 업적 없음
mm15
대표 업적 없음
avatar
FEARIS
대표 업적 없음
ASJ
워게임 고인물
avatar
zkvlkat
워게임: 50
onedelay
강의 수강: 1
xxxxeee
워게임: 1

댓글 3

2dedce
워게임 고인물
쾅쾅쾅쾅 문열어!!
avatar
사용자
CTF Second Place
신기하네요. 덕분에 또 새로운 것을 배우고 갑니다
리신뭐해갱오라고
대표 업적 없음
풀이를 구매해서 보진 않았지만 어떤 공격 방법인지 나와있어서 사실상 답보고 풀었네요...