WEB/webhacking.kr (old)

webhacking.kr 31번

hongjw 2020. 2. 11. 23:20

level 31 첫화면

fsockopen(string hostname, int port, int [error], string [errstr]) : 서버의 열려진 어떤 포트로도 접속할 수 있고, 소켓의 연결을 설정할 수 있는 함수

 

먼저 코드를 해석해보자 !

port는 10000 ~ 10100사이의 랜덤으로 지정되고, GET의 server파라미터로 받은 IP에 랜덤한 port로 소캣을 열어서 연결을 시도한다.

Warning을 보면, 'IP번호:포트번호'에 연결할 수 없다고 뜬다. 

 

이를 통해 fsockopen함수로 연결을 시도한다는 것을 알 수 있다.

=> 연결을 시도한다는 것은 서버에 요청을 보낸다는 말과 같다.

요청을 보내면, 서버가 받아야하는데 그냥 받을 순 없고 서버 소캣을 열어야 한다 ! ๑°⌓°๑

 

문제를 해결하기 위해서는 요청받을 서버를 만들어줘야 한다.

- 웹 서버를 열어서 apache2 로그 보기

- 간단한 python3 웹 서버를 열어서 로그 보기

- netcat을 이용해 소켓 하나만 받아보기 .. 등 방법이 여러가지 있다.

 

nc(netcat)를 이용해 10000~10100사이의 포트를 Listening 상태로 열어놓고, server=IP주소를 입력하여 포트번호가 맞을때까지 새로고침한다.

내가 입력한 포트번호가 10051이 나오면! 위처럼 FLAG값이 출력된다. 

문제 해결 ㅎㅅㅎ

 

 

 

참고

>>https://wiki.kldp.org/HOWTO/html/PHP/PHP-HOWTO-15.html

'WEB > webhacking.kr (old)' 카테고리의 다른 글

webhacking.kr 36번  (0) 2020.02.11
webhacking.kr 32번  (0) 2020.02.11
webhacking.kr 21번  (0) 2020.02.11
webhacking.kr 27번  (0) 2020.02.08
webhacking.kr 26번  (0) 2020.02.06