본문 바로가기

Wargame/Web-W

wargame.kr strcmp

wargame.kr 의 strcmp 문제다.

strcmp 함수의 우회법을 알면 플래그를 가질 수 있단다.



딱 들어가면 password를 입력받는 박스와 밑의 소스코드가 있다.

소스코드부터 살펴보도록하자.



랜덤값으로 password를 파일에서 가져오는데

어쨌든간 그 password랑 내가 입력한 password랑 같아야지 키 값이 출력된다.

그럼 정상적으로는 거의 불가능에 가깝게 패스워드가 일치할 수 없다는것이다.

strcmp 함수의 취약점을 이용하면 손쉽게 풀 수 있다.

php 버전마다 다르지만, strcmp 함수에는 배열과 문자열을 비교했을 때

NULL을 반환하게 되어있다. 즉 0 을 반환한다.

그게 무슨소리냐? strcmp는 두 문자열이 같을 때 0을 반환하게 된다.

결국 문자열과 배열을 비교하게되면 무조건 0을 반환하므로

두 개의 문자열과 배열이 같지 않더라도 같은 것처럼 인식한다는 얘기다.

막는 방법은 간단하게 '=='을 '==='으로 고쳐주면된다.



어쨌든, 배열과 비교하면 무조건 0을 반환하므로

입력폼의 password를 배열 형식으로 바꿔주자.



그리고 아무런 문자, 숫자나 입력하고 chk!



플래그를 얻었다. 끝.


반응형

'Wargame > Web-W' 카테고리의 다른 글

xcz.kr PROB18  (0) 2017.08.05
xcz.kr PROB32  (0) 2017.08.04