728x90
$port = rand(10000,10100);
$socket = fsockopen($_GET['server'],$port,$errno,$errstr,3) or die("error : {$errstr}");


Notice: Undefined index: server in /var/www/html/challenge/web-16/index.php on line 15

port 값을 랜덤으로 설정해서 나한테 연결 요청을 한다. 만약 port의 값이 10100이라면 내 서버ip(=공유기 인터넷 ip):10100으로 요청하는 것이다.

:10100은 연결을 원하는 서버측 프로세스의 포트 번호라고 표현할 수 있다. 일반적으로 우리가 http://www.naver.com:80 표현하는 것도 naver의 80번 포트에 연결을 요청하는 것이다.

이 문제는 10000~10100포트로의 연결 요청을 받아서 연결하면 된다. 

구체적으로 포트포워딩은 공유기의 인터넷 ip(ex KT는 172.xxx~):포트번호(외부)로 요청이 온다면 내부 ip 주소(ex 자신의 pc)의 포트번호(내부)로 전달해준다고 생각하면 된다.

cmd창에서 ipconfig 명령을 통해 내 공유기 이름을 찾아서 기본 게이트웨이 주소(ex 192.168.1.1)를 url창에 입력한다. 접속 후 포트포워딩을 설정한다.

포트번호는 16bit라서 1~65535까지 지정이 된다.

  • 0 ~ 1023 : 잘 알려진 Well-Known Port 라고 부르며, 웹 서버(80/tcp)나 메일 서버(25/tcp) 등의 일반적인 프로그램들이 사용.
  • 1024 ~ 49151 : Registered Port. 특정 프로그램들이 주로 사용. ex) MySQL(3306/tcp).
  • 49152 ~ 65535 : Dynamic Port로 자유롭게 사용.

65534포트로 포트포워딩

다음으로 netcat 프로그램을 다운받아 cmd에서 실행시킨다.

명령어는 nc -lvp 65534

-l(listen): 연결요청을 대기하는 상태

-v(verbose): 프로그램 실행시 상세정보 출력

-p(port): 포트번호 지정

31번 문제 페이지를 새로고침하거나 재접속하면 cmd 창에 flag가 나온다.

답: FLAG{i_have_a_big_and_beautiful_server}

728x90

'webhacking.kr' 카테고리의 다른 글

webhacking 33  (2) 2022.12.22
webhacking 32  (0) 2022.12.21
webhacking 29(SQL Injection)  (0) 2022.12.19
webhacking 28(설정 파일 업로드)  (0) 2022.12.19
webhacking 27(SQL Injection)  (0) 2022.12.19

+ Recent posts