-
2단계로 이루어진 문제이며 첫번째 단계에서는 알맞은 Nickname과 Password를 입력하여 두번째 단계로 넘어간 후 System() 함수를 이용하여 FLAG를 획득하는 문제이다.
[문제 풀이]
1. 문제 파일을 다운로드 하여 분석 할 시 눈에 띄는 조건이 있는것을 확인 가능하다.

조건 위 조건들은 아래와 같다.
- 패스워드에 알파벳 입력 금지
- Nickname에 대소문자 관계없이 nyang 문자열 존재 시 공백으로 치환
- Password에 숫자, @, 2~3개의 숫자, 31, 0~8에 해당 하지 않는 숫자, !가 포함될 시 d4yor50ng으로 치환
2. 조건문에 알맞은 Nickname과 Password가 명시되어 있기에 위의 조건들을 잘 우회해서 입력해야 한다.
3. 우선 Nickname에서 dnyang0310을 입력해야하지만 공백으로 치환되는 것을 막기위해 아래와 같이 입력하여 우회하고 반대로 Password의 경우 알파벳을 입력하지 못하도록 되어 있기에 특정 문자열 조건 만족시 치환되는 조건을 이용하기 위해 이에 걸맞게 값을 입력한다.

값 이렇게 입력할 경우 Nickname의 경우 dnnyangyang0310에서 nyang이 공백으로 치환되며 dnyang0310이 되며 Password의 경우 조건을 만족하여 d4yor50ng로 치환됨과 동시에 +1+13을 값에 포함하여 d4yor50ng+1+13으로 참이된다.
4. 이렇게 두번째 단계로 넘어올 경우 System() 함수를 이용하여 ../dream/flag.txt의 내용을 출력하여 FLAG를 획득하면 되지만 또다시 필터링이 걸려있다.

조건 5. 이거는 * 문자를 이용하여 우회해주면된다.

값 6. FLAG 획득 성공

FLAG 획득 정규표현식을 사용한 문제로 정규표현식에 대한 이해가 필요하며 부족한 부분이기에 공부가 필요할 것 같다.
'개인공부 > 드림핵' 카테고리의 다른 글
🌱 simple-web-request (0) 2024.11.21 ex-reg-ex (0) 2024.11.18 Flying Chars (0) 2024.11.18 php7cmp4re (0) 2024.11.18 devtools-sources (0) 2024.11.18