[webhacking.kr] old-31 문제

2026. 1. 23. 23:53·워게임/webhacking.kr

1. 문제 정보

  • 문제 번호 : old -31
  • 문제 점수 : 15점

2. 문제 분석

문제에 들어가면 아래 코드가 뜬다 php로 랜덤으로 10000과 10100사이에 포트를 fsokopen으로 server파라미터로 들어온 주소로 소켓을 연다.

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

Warning: fsockopen(): unable to connect to 211.107.176.16:10055 (Connection timed out) in /var/www/html/challenge/web-16/index.php on line 23
error : Connection timed out

 

 

포트를 열어서 연결해보자


 

3. 풀이

소켓을 열고 웹사이트를 리로딩하면 flag가 나온다.

 

import socket
import select

sockets = []
start_port = 10000
end_port = 10100

print(f"[*] {start_port} ~ {end_port} 포트 전체 리스닝 시작...")

# 1. 포트 101개 열기
for port in range(start_port, end_port + 1):
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        s.bind(('0.0.0.0', port))
        s.listen(1)
        sockets.append(s)
    except Exception as e:
        pass # 에러 무시

print("[*] 준비 완료. 웹페이지를 새로고침 하세요!")

# 2. 접속 대기
readable, _, _ = select.select(sockets, [], [])
ready_socket = readable[0]
client_conn, client_addr = ready_socket.accept()

print(f"\n[!] 연결 성공! (포트: {ready_socket.getsockname()[1]})")

# -----------------------------------------------------
# [추가된 부분] 데이터를 받아서 확인해보기
# -----------------------------------------------------
try:
    # 1024바이트만큼 데이터를 기다려봄 (타임아웃 설정 가능)
    client_conn.settimeout(2) 
    data = client_conn.recv(1024)
    
    if data:
        print(f"[+] 받은 데이터: {data.decode('utf-8', errors='ignore')}")
    else:
        print("[-] 연결은 됐지만, 서버가 보낸 데이터는 없습니다.")
        
except socket.timeout:
    print("[-] 데이터 수신 대기 시간 초과 (서버가 아무 말도 안 함)")

# 3. 정리
client_conn.close()
for s in sockets:
    s.close()

 


4. 요약

 

  • 서버가 지정된 범위(10000~10100) 내의 랜덤 포트로 접속을 시도하므로, 내 PC에서 해당 범위의 포트를 모두 열어 대기했다.
  • 파이썬의 socket과 select 모듈을 이용해 리스닝상태로 만들어 서버의 연결 요청을 수락한다.
  • 연결이 되면 FLAG가 온다.

 

'워게임 > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] old-25 문제  (0) 2026.01.26
[webhacking.kr] old-27 문제  (0) 2026.01.26
[webhacking.kr] old-39 문제  (0) 2026.01.23
[webhacking.kr] old-38문제  (0) 2026.01.23
[webhacking.kr] old-18문제  (0) 2026.01.22
'워게임/webhacking.kr' 카테고리의 다른 글
  • [webhacking.kr] old-25 문제
  • [webhacking.kr] old-27 문제
  • [webhacking.kr] old-39 문제
  • [webhacking.kr] old-38문제
yt_5246
yt_5246
yt5246 님의 블로그 입니다.
  • yt_5246
    yt의 공부 블로그
    yt_5246
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 분류 전체보기 (61)
      • IT (1)
      • Security (11)
        • 시스템해킹 (3)
        • 리버싱 (6)
        • 암호학 (0)
        • tools (2)
      • Book (0)
      • 자격증 (3)
      • 워게임 (46)
        • DVWA (7)
        • WebGoat (4)
        • webhacking.kr (35)
      • 버그바운티 (0)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
yt_5246
[webhacking.kr] old-31 문제
상단으로

티스토리툴바