촉촉한초코칩

Dreamhack - phpreg 본문

Study/Web Hacking

Dreamhack - phpreg

햄친구베이컨 2024. 7. 23. 00:35

 

코드

다운로드 받은 파일에는 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\"]\!/

  1. ^: 문자열의 시작을 나타냅니다.
  2. \d*: 0개 이상의 숫자 (\d)를 나타냅니다. 즉, 숫자가 없어도 되며, 있으면 그만큼 매칭됩니다.
  3. \@: '@' 기호를 일치시킵니다.
  4. \d{2,3}: 2에서 3개의 연속된 숫자 (\d)를 나타냅니다. 이는 2자리 또는 3자리 숫자와 매치됩니다.
  5. (31)+: '31' 패턴이 최소 한 번 이상 반복되어야 함을 나타냅니다. 즉, '31', '3131', '313131' 등과 매치됩니다.
  6. [^0-8\"]: 숫자 0부터 8 사이가 아닌 문자 또는 '"' 이외의 문자와 매치됩니다. [^...]는 해당 문자 집합을 제외한 문자와 매치됩니다.
  7. \!: '!' 문자를 일치시킵니다.
  8. $: 문자열의 끝을 나타냅니다.

입력값 : 1@31319! 
(https://regexr.com/ 여기에서 확인할 때 정규표현식 문장을 한번에 다 입력하지 말고 하나하나 해야 먹힌다..)

입력값에 +1+13까지 입력해야 한다! 

 

4. cmd 값은 

문제를 보면  ../dream/flag.txt에 위치한다고 한다. 

flag라는 단어를 쓰면 안되므로 f?ag로 우회해서 작성한다. 

입력값 : cat ../dream/f?ag.txt

 

참고 : https://velog.io/@ayg0418/Dreamhack-phpreg

'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