HackChang

[Wargame.kr] 7번 문제 풀이 strcmp 본문

W4RG4M3/W3B

[Wargame.kr] 7번 문제 풀이 strcmp

HackChang 2021. 7. 28. 15:54

7번 문제

이번 문제는 strcmp 함수에 대한 우회를 하는 문제로 보인다.

Start를 눌러 페이지로 이동해보도록 하겠다.

 

다음과 같은 페이지로 이동했고, view-source를 눌러 소스를 보도록 하겠다.

 

php소스를 보면 우리가 입력한 password와 변수로 저장된 password가 일치하면 Flag값이 나오는 것으로 보인다.

php의 strcmp 함수는 두 비교대상이 같을 때 0을 반환하므로, 0을 반환하는 방법을 통해 우회를 할 수 있을 것이라고 생각했다.

구글에서 검색을 통해 특정 버전의 php에서는 배열값과 비교를 하면 NULL값을 반환하는 것을 알게 되었고,

 

구글 검색을 통해 PHP 자료형 비교표를 볼 수 있었다.

$password에 대해 배열로 인식하게 하면 NULL값과 0을 느슨한 비교를 통해 0을 반환하는 것을 아래의 표를 통해 알 수 있다.

 

NULL == 0 에 대한 결과

 

NULL === 0 에 대한 결과

 

이를 통해 ==0이 아닌 ===0으로 비교를 할 경우 이번 문제에 대한 대응이 가능할 것이라고 생각했다.

 

 

해당 password에 대한 이름을 password[]으로 하고, password에 아무 값이나 입력하고 인증을 해봤다.

 

FLAG값을 확인할 수 있었고, 인증을 통해 클리어를 했다.

 

Comments