tmxklab
[Web] proxy-1 본문
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부분은 다음 링크를 참고하면
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 |