$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로 자유롭게 사용.
다음으로 netcat 프로그램을 다운받아 cmd에서 실행시킨다.
명령어는 nc -lvp 65534
-l(listen): 연결요청을 대기하는 상태
-v(verbose): 프로그램 실행시 상세정보 출력
-p(port): 포트번호 지정
31번 문제 페이지를 새로고침하거나 재접속하면 cmd 창에 flag가 나온다.
답: FLAG{i_have_a_big_and_beautiful_server}
'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 |