드림핵에서 csrf-1번문제를 csrf기법을 이용해서 풀어볼 것이다

서비스에 접속하면 간단한 메모 기능이 있는 웹 어플리케이션이 제공된다. 핵심 기능은 다음과 같다.
- /memo: 메모를 작성하고 조회하는 기능
- /admin/notice_flag: 내부 관리 기능으로 보이는 엔드포인트
이 문제에서 주목할 점은 /admin/notice_flag 경로를 외부 사용자가 직접 호출해도 플래그가 출력되지 않는다는 것이다. 접근 시 조건이 필요하다.
문제의 백엔드 코드 일부를 확인하면 다음과 같은 조건이 포함되어 있다.
접근 제한 조건
- 요청자의 IP 주소가 127.0.0.1일 것
- URL 쿼리스트링에 userid=admin 파라미터가 포함될 것
조건을 요약하면 다음과 같다.
if client_ip != "127.0.0.1":
reject()
if request.args.get("userid") != "admin":
reject()
memo_text += FLAG
즉, 로컬에서 userid=admin이라는 파라미터가 포함된 요청이 오면, 서버가 메모에 FLAG 값을 삽입하게 된다.
페이로드
<img src="/admin/notice_flag?userid=admin">'보안' 카테고리의 다른 글
| 2026년 보안 트렌드와 AI 관련 이슈 (0) | 2025.12.15 |
|---|---|
| 드림핵, 웹해킹.kr | simple_sqli, old-18 (1) | 2025.04.17 |
| 드림핵 | xss-1 (0) | 2025.04.17 |
| 웹해킹.kr | old-15, 20 (0) | 2025.04.03 |
| 웹해킹.kr | old-24 (0) | 2025.03.27 |