Wargame/Webhacking.kr

Webhacking.kr old 31번 문제 풀이

esyeonge 2021. 4. 28. 11:09

31번 문제를 클릭하면 위와 같은 화면이 나온다.

서버에 연결하는 것이 거절되었다는 에러 메시지가 출력되고 있다.

 

코드에서 fsockopen() 함수를 사용하고 있어서, 이게 무엇인지 알아보았다.

fsockopen()
; PHP에서 사용되는 함수로, 소켓 통신에 사용된다.
fsockopen("IP주소", "포트번호", "에러", "에러메시지", "연결시도시간")이 문법이고, 반환되는 값은 파일 포인터이다.

 

사진에서는 IP를 가려두었지만,

내 IP로 연결되는 것을 알 수 있는데, 연결이 될 수 있도록 10000번부터 10100의 포트를 열어주어야 한다. (포트포워딩)

 

KT 공유기를 사용하는 경우에는 http://172.30.1.254를 입력하여 공유기 설정 페이지로 접속하면 된다.

 

cmd에서 ipconfig를 수행한 후(Window 기준) 나오는 IP 주소를 내부 IP 주소에 넣고,

외부 포트는 문제에서 10000부터 10100까지 랜덤 포트를 생성하니까 10000 ~ 10100으로 잡아준다.

그런 다음 외부 포트 10000부터 10100까지 들어오는 건 내부포트 10000으로 처리하게 해준다.

 

eternallybored.org/misc/netcat/

 

netcat 1.11 for Win32/Win64

 

eternallybored.org

10000번으로 들어오는 통신을 받아주기 위해서 netcat을 다운받았다.

Windows를 사용하는 경우, 실시간 탐지에 netcat이 걸리니까 실시간 탐지 기능을 꺼주어야 한다.

 

netcat 압축을 푼 경로에 들어가서 nc -l -p 10000을 입력하면 10000번 포트 통신을 대기하게 되고, 

webhacking.kr 페이지를 새로 고침하면 플래그가 뜬다.

 

auth에 플래그를 입력해주면 문제가 풀린다.