Hacking/[Web]Natas

OverTheWire [Natas Level 23]

양선규 2023. 4. 11. 19:58
728x90
반응형

Natas Level 23 입니다.

 

 

Level 23

 

문제입니다. Password 입력 폼이 있네요. 아무거나 입력해봅시다.

 

 

natas23

 

natas23을 입력해 보겠습니다.

 

 

Wrong!

 

Wrong! 틀렸다고 하네요.

위 URL 창을 통해 입력 폼 이름은 passwd 라는 것을 알 수 있습니다.

소스코드를 확인해 봅시다.

 

 

짧다

 

오랜만에 굉장히 간단한 코드네요! 눈이 아주 편합니다.

password 출력 조건도 굉장히 간단한데요. 딱 2가지입니다.

 

1. 입력값에 "iloveyou"문자열이 포함되어 있어야 한다. ( 띄어쓰기처럼 보이는데 아닙니다 )

2. 입력값의 크기가 10보다 커야 한다.

 

그런데 좀 이상합니다. 입력값은 iloveyou 문자열이 포함되어 있는데 10보다 커야 한다니?

문자열과 숫자를 비교하고 있군요. 이게 가능한 건가요?

혹시 입력값의 길이를 의미하는 건가, 아니면 어떤 인코딩을 해서 전달해야 하나, 싶어서 여러가지를 시도해 봤습니다.

 

 

iloveyou11

 

iloveyou11

문자열과 숫자를 이어붙여 보았지만 실패했습니다.

 

 

iloveyou+11

 

iloveyou+11

+ 연산자를 이용해 봤는데 실패했습니다.

 

 

iloveyouiloveyou

 

iloveyouiloveyou

입력값 길이가 10을 넘어야 하나 싶어 입력해 보았지만 실패했습니다.

 

 

여러가지 형태들

 

이후에도 다양한 형태로 인코딩한 값을 전달해 보았지만 실패했고

소스코드 맨 밑에 주석으로 적힌 morla / 10111 값이 힌트인가 싶어, 이를 참고해 다양하게 도전해봤지만 전부 실패했습니다.

 

간단한 2가지 조건인데도 답을 찾을 수 없다니. 뭔가 조그마한 단서 하나로 풀 수 있을 것 같은데 말이죠.

 

 

11iloveyou

 

고민해보다가, 별 생각 없이 숫자를 앞쪽으로 옮겨 입력해봤습니다.

 

 

왜 성공한거지

 

? 성공했습니다.

어리둥절한데요. 11iloveyou / iloveyou11 두가지 값에 대한 반환이 다르게 이루어지다니.

둘 다 문자열 형태이고, 당연히 취급도 같아야 하는 것 아닌가요?

 

어째서인지 이유를 찾아봤습니다만, PHP만의 문자열 처리방식의 특이성 이라고 합니다.

PHP에서는 11iloveyou 처럼 앞에 숫자가 붙은 경우, 정수 11로 변환될 수 있다고 하네요.

이렇게 꼼수 하나를 배워 갑니다.

(그럼 morla /10111은 대체 뭐지?)

728x90
반응형

'Hacking > [Web]Natas' 카테고리의 다른 글

OverTheWire [Natas Level 25]  (2) 2023.05.22
OverTheWire [Natas Level 24]  (3) 2023.04.11
OverTheWire [Natas Level 22]  (0) 2023.04.05
OverTheWire [Natas Level 21]  (0) 2023.04.04
OverTheWire [Natas Level 20]  (0) 2023.04.04