tmxklab

[Web] proxy-1 본문

War Game/dreamhack

[Web] proxy-1

tmxk4221 2021. 6. 8. 14:51

1. 문제확인

host와 port값을 지정하고 Data를 보낼 수 있는 것 같다. 위와 같이 입력 값을 구성하고 Send 버튼을 누르면 다음과 같이 출력된다.

 

이제 소스코드를 확인해보자

/admin으로 POST형식으로 접속하면 admin()가 호출되고 if문을 통과하면 FLAG값을 리턴해준다.

 

 

2. 접근방법

처음에는 BurpSuite를 통해서 직접 url에 admin과 헤더 값 등을 변경하였는데 첫 번째 if문에서 막혔다.. 그래서 생각한 것은 처음 /socket에서 입력받는 코드 부분을 살펴보았다.

host, port, data를 입력하면 소켓 통신을 통해 연결되고 입력한 data값을 보내준다.

따라서, /socket에 있는 입력 폼을 이용하여 웹 서버의 host주소와 port번호를 넘겨주면 다시 웹 서버로 연결할 수 있으니 "if request.remote_addr != '127.0.0.1':" 요 부분을 통과할 수 있을 것이라고 생각하였다.

 

그럼 테스트로 웹 서버의 host주소와 port번호를 작성하고 data부분에 http 헤더를 작성해보자

그 결과 원하는 출력 값이 나오게 되었다.

 

 

3. 문제풀이

이제 이 다음부터는 쉽다.

Header에 작성해야 할 것들은 'User-Agent', 'DreamhackUser', 'Cookie'이다.

그리고 form부분은 다음 링크를 참고하면

 

POST - HTTP | MDN

HTTP POST 메서드는 서버로 데이터를 전송합니다. 요청 본문의 유형은 Content-Type 헤더로 나타냅니다.

developer.mozilla.org

Body부분에 'userid=admin'이 들어가야 하고 Header에는 'Content-Type: application/x-www-form-urlencoded'로 작성하면 된다. 마지막으로, Header부분에 Content-Length값으로 Body Data의 길이를 작성하면 된다. -> 12(userid=admin)

 

data에 작성되는 부분

POST /admin HTTP/1.1
Host: host1.dreamhack.games:23907
Content-Length: 12
Content-Type: application/x-www-form-urlencoded
User-Agent: Admin Browser
DreamhackUser: admin
Cookie: admin=true
Connection: close

userid=admin

작성 후에 다시 요청해보면

플래그 값을 얻을 수 있다.

'War Game > dreamhack' 카테고리의 다른 글

[rev] rev-basic-2  (0) 2021.06.10
[Web] command-injection-1  (0) 2021.06.10
[Web] pathtraversal  (0) 2021.06.07
[Web] cookie  (0) 2021.06.07
Comments