[H3X0R CTF 2016]

Web_10

cmp



대회 초중반쯤 공개 된 10점짜리 web 문제입니다. 친구들이랑 저녁밥 먹고 다시 들어와 보니 공개 되어 있었죠.. 확인 해 봅시다.


패스워드를 입력하는 text box와 submit 버튼 하나가 있습니다.

여기에 아무 문자나 입력을 하고 submit 해 봅시다.




A를 submit 해 보았더니 2라는 결과값을 뱉어냈습니다.



d를 입력 했을 때는 -33이 나왔습니다.


PHP strcmp() 함수의 반환값의 특성을 이용한 문제인 것 같습니다. 이 문제에서 str1은 flag, str2는 string을 가리키고 있는 것 같습니다.

아스키 코드 상으로 A보다 2만큼 위에 있는 문자는 C입니다. 



C를 입력해주니 15라는 값을 반환 해 주었습니다. C에 이어 다른 글자를 입력 해 주었을 때 위와 같이 양/음수로 나누어 출력을 해 주었습니다.



다른 문자들을 집어 넣어 2번째 문자는 0임을 알 수 있었습니다. 올바른 문자를 입력 했을 때 반환하는 숫자 값이 1씩 줄어드는 것을 보니, 이 값은 남은 string의 길이 같습니다. flag의 총 글자 수는 16인 것을 여기서 알 수 있었습니다.



사실 python으로 스크립트를 작성하여 브포를 돌려볼까도 생각 해 봤지만, 음수도 있고, 반환하는 숫자 값도 일정하지 않아 직접 손으로 브포를 했습니다...

(저 숫자가 남은 글자 수인 것을 알아 낸 타이밍이 4자 이상 찾았을 때라... 귀찮기도 했습니다.)



flag is C0MP4R3_15_900D!



+ Recent posts