LEVEL 3

CProxy: Forge

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

문제 설명

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

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


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

난이도 투표 31

질문 3

문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
도와주세요.. 진짜 모르겠어요..
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
LEVEL 3

CProxy: Forge

web

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

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

최근 풀이자 151

avatar
Rootsquare
해결사
avatar
huli07
웹해킹 고인물
S9
대표 업적 없음
l하늘섬l
공부벌레
avatar
dcthinh
대표 업적 없음
avatar
b4shu206
대표 업적 없음
duc193
대표 업적 없음
jinsu9758
워게임 고인물
정민기입니다
대표 업적 없음
Waivey
웹해킹 입문

댓글 4

avatar
Rootsquare
해결사
이 호스트는 안전한 호스트일까? 그 누구도 믿지 마라...
2dedce
워게임 고인물
쾅쾅쾅쾅 문열어!!
avatar
사용자
해결사
신기하네요. 덕분에 또 새로운 것을 배우고 갑니다
리신뭐해갱오라고
대표 업적 없음
풀이를 구매해서 보진 않았지만 어떤 공격 방법인지 나와있어서 사실상 답보고 풀었네요...