| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- ReverseEngineering
- baekjoon online judge
- follina
- 버프스위트
- KaliLinux
- CTF
- suninatas
- 소프트스퀘어드
- 칼리리눅스
- 문제풀이
- 3wayhandshaking
- 와이어샤크
- 혼자공부하는자바
- Forensic
- Burpsuite
- pico
- 메모리포렌식
- 포트스캔
- picoCTF
- 백준
- 자바복습
- 볼라틸리티
- 아티팩트
- 안드로이드리버싱
- artifact
- 포렌식
- 9012
- 앱
- 자바입문
- 컴공
Archives
- Today
- Total
컴퓨터공학 전공생의 보안 도전기✌
[Webhacking.kr] Challenge 11번 본문
문제

문제에 들어가 보니 사진처럼 wrong 이라는 글씨와 함께 view-source 라는 하이퍼링크가 친절하게 달려 있었다.
풀이
view-source 를 눌러 소스코드를 살펴보았다.

소스 코드 내부를 살펴보면 'pat'이라는 변수를 GET으로 받아들이는 'val'이라는 값과 비교하여 맞으면 solve되는 형식이었다.
그렇다면 pat 변수는 어떻게 정의되어 있는지 보자. pat은 정규표현식으로 형식이 지정되어있었다. 하나하나 뜯어보면, 아래 표와 같다.
| [1-3], [a-f] | 대괄호 안의 범위 중 한 가지 값 (1~3, a~f) |
| {5} | 바로 이전 값을 중괄호 안의 숫자만큼 반복 |
| _ | 언더바 (_) |
| .x | x는 임의의 한 문자 (개행문자 제외) |
| x* | x를 0번 이상 반복 |
| \t | 탭 (url encoding 필요) |
즉 pat = 1~3 사이 문자 하나 + (a~f 문자 하나)*5 + _ + IP주소 + %09 + p + %09 + a + %09 + s + %09 + s
라는 것을 알 수 있다. 그럼 이제 이 정규표현식을 만족하는 임의의 문자열을 val 이라는 변수로 쿼리를 주어보자.

그러면 이렇게 문제가 해결되는 것을 확인할 수 있다.

'문제풀이 > Web' 카테고리의 다른 글
| [Webhacking.kr] Challenge 3번 (0) | 2022.12.03 |
|---|---|
| [Webhacking.kr] Challenge 10번 (0) | 2022.06.04 |
| [Webhacking.kr] 33번 (0) | 2022.05.27 |
| [Webhacking.kr] 43번 (0) | 2022.05.25 |
| [Webhacking.kr] 42번 (0) | 2022.05.25 |