level31[old]

2022. 4. 12. 17:04Site/Webhacking.kr

이번시간에는 level31을 풀어보겠습니다

공부하는 입장이니 틀린 것이 있더라도 양해부탁드립니다


level31은 포트포워딩에 관련된 내용이었습니다

포트포워딩에 관한 내용은 예전에 작성한게 있기 때문에 참고하시면 감사하겠고 여기서 간단하게 말씀드리면

NAT의 기능중에 하나로 컴퓨터들에게 특정한 포트를 개방시켜서 서로 통신이 가능하게 하는 기능입니다

 

 

level31 에 들어가 보니 Notice가 보이는 창이 뜨자마자 갑자기 밑에 있는 Warning 창으로 바뀝니다

가려진 부분[제 ip주소입니다]

 

한번 내용을 확인해 보겠습니다

$port = rand(10000, 10100);

-> 값을 랜덤하게 얻는 rand함수를 통해 10000 - 10100 사이의 값 중에서 1개의 값을 port변수에 저장

아마 10000 - 10100의 포트값을 설정해 주는 것 같은데 저 값들은 Port번호에서 Registered Port 구간에 해당이 됩니다.

 

cf)

Port 번호는 16bit로 이루어짐 -> 2^16 = 65536개의 포트번호 존재

0 - 1023번 : Well Known Port -> http[80번], ssh[22번]이 여기에 해당됨

1024 - 49151번 :  Registered Port -> 기간, 사업자들이 사용하는 포트번호구간

ex) 3306번 -> RDBMS을 사용하기위한포트, 3389 -> 원격접속포트

49152 - 65535번 : Dynamic Port -> 일반유저들이 자유롭세 사용할수있는 포트번호구간

 

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

-> fsockopen(hostname, port, errno, errstr, timeout)

hostname : URL에 적혀있는 server의 값이 들어갑니다

port : 10000-10100의 랜덤값이 들어가서 server를 추출된 랜덤값의 포트로 열어줍니다

errno : 오류번호를 지정합니다[선택사항]

errstr : 오류메시지를 문자열로 지정합니다[선택사항]

timeout : 초 단위로 연결시간초과를 지정합니다[선택사항]

연결이 안되면 die함수를 통해 에러메시지를 출력합니다

 

위 화면에서 "error : Connection refused" 가보이는 것으로 보아 현재 연결이 되지 않은 상태이므로 연결을 시켜주어야 됩니다

 

일단 공유기ip를 사용중이므로 공유기에서 포트포워딩작업을 해주어야 될 것 같습니다

해당 통신사 공유기의 공유기 웹관리 페이지에 접속을 해줍니다[저는 kt이므로 172.30.1.254로 들어갔습니다]

 

KT 공유기 관리자 페이지 주소로 들어가셔서 로그인 하시면

장치설정 -> 트래픽관리 -> 포트포워딩설정으로 이동합니다.

외부포트, 내부IP주소, 내부 포트, 설명 칸만 적으면 될 것 같습니다.

 

외부포트 -> 외부에서 접근할 포트번호

[문제에서 10000-10100까지 랜덤으로 포트 번호가 설정되므로 외부포트를 10000-10100로 설정]

내부IP주소 -> 현재사용중인 자신의 ip주소[포트포워딩할 기기의 내부ip주소]

내부포트 -> 외부포트번호가 접근하였을때 접근할 내부포트번호

 

내부 ip주소를 확인하기위해 cmd창에 ipconfig라고 명령합니다.

저는 노트북 wifi를 사용하고 있어 무선 LAN 어댑터 Wi-Fi 부분 -> Ipv4 주소에서 내부 ip주소를 찾아주었습니다

 

소스코드에서 외부포트번호가 10000-10100 랜덤이므로 외부포트에 해당 포트번호를 입력해줍니다.

내부IP주소에는 cmd에서 확인한 주소값을 입력한다음 내부포트는 10000포트번호를 입력하였습니다-> 내pc외부ip:10000-10100포트로 접근하면 -> 내pc내부ip주소:10000으로 연결이 됩니다

 

 

 

10000포트를 열어줘서 정보를 받기위해 netcat을 설치해줍니다.

https://eternallybored.org/misc/netcat/

nc명령어를 통해 10000포트번호를 열어줍니다.

그러니깐 외부포트와 연결이되어 FLAG값을 얻을 수 있습니다.

cf)

nc옵션

-l->listnert[연결하기위해 포트를 염]

-v->상세한정보출력

-p->포트번호로적용됨

 

cf)

정말 알아야 될게 너무 많은 것 같다

 

'Site > Webhacking.kr' 카테고리의 다른 글

level11[old]  (0) 2022.04.15
level19[old]  (0) 2022.04.13
level61[old]  (0) 2022.04.12
level58[old]  (0) 2022.04.10
level33[old]  (0) 2022.04.10