촉촉한초코칩
Dreamhack - phpreg 본문
코드
다운로드 받은 파일에는 index, step2.php 파일이 들어있다.
step 파일을 보면 pw와 name의 정규포현식과 값이 들어있다.
preg_replace() 함수는 문자열 내에서 정규 표현식을 사용하여 특정 패턴을 찾아 다른 문자열로 대체한다고 한다.
name, pw 필터링
- pw 값에 알파벳이 들어있으면 안됨
- name에 nyang값이 있으면 ""로 치환
→ 알파벳이 들어있으면 안되는데 pw의 저 값은 맞아야 한다..?
정규표현식 검사하는 함수를 우회할 수 있는 입력값을 사용한다.
공격
1. pw에는 알파벳이 들어가면 안됨
2. name의 nyang은 공백으로 치환되기 때문에 우회 → dnynyangang0310
3. 알파벳 입력이 안되므로 정규표현식에 맞게 문자열을 입력해야 함
/\d*\@\d{2,3}(31)+[^0-8\"]\!/
- ^: 문자열의 시작을 나타냅니다.
- \d*: 0개 이상의 숫자 (\d)를 나타냅니다. 즉, 숫자가 없어도 되며, 있으면 그만큼 매칭됩니다.
- \@: '@' 기호를 일치시킵니다.
- \d{2,3}: 2에서 3개의 연속된 숫자 (\d)를 나타냅니다. 이는 2자리 또는 3자리 숫자와 매치됩니다.
- (31)+: '31' 패턴이 최소 한 번 이상 반복되어야 함을 나타냅니다. 즉, '31', '3131', '313131' 등과 매치됩니다.
- [^0-8\"]: 숫자 0부터 8 사이가 아닌 문자 또는 '"' 이외의 문자와 매치됩니다. [^...]는 해당 문자 집합을 제외한 문자와 매치됩니다.
- \!: '!' 문자를 일치시킵니다.
- $: 문자열의 끝을 나타냅니다.
입력값 : 1@31319!
(https://regexr.com/ 여기에서 확인할 때 정규표현식 문장을 한번에 다 입력하지 말고 하나하나 해야 먹힌다..)
입력값에 +1+13까지 입력해야 한다!
4. cmd 값은
문제를 보면 ../dream/flag.txt에 위치한다고 한다.
flag라는 단어를 쓰면 안되므로 f?ag로 우회해서 작성한다.
입력값 : cat ../dream/f?ag.txt
'Study > Web Hacking' 카테고리의 다른 글
Dreamhack - simple-ssti (0) | 2024.07.31 |
---|---|
Dreamhack - simple-web-request (0) | 2024.07.25 |
Dreamhack - Flying Chars (0) | 2024.07.18 |
Dreamhack - ex-reg-ex (0) | 2024.07.18 |
Dreamhack - blind-command (0) | 2022.08.08 |