W4RG4M3/W3B
[Wargame.kr] 7번 문제 풀이 strcmp
HackChang
2021. 7. 28. 15:54
이번 문제는 strcmp 함수에 대한 우회를 하는 문제로 보인다.
Start를 눌러 페이지로 이동해보도록 하겠다.
다음과 같은 페이지로 이동했고, view-source를 눌러 소스를 보도록 하겠다.
php소스를 보면 우리가 입력한 password와 변수로 저장된 password가 일치하면 Flag값이 나오는 것으로 보인다.
php의 strcmp 함수는 두 비교대상이 같을 때 0을 반환하므로, 0을 반환하는 방법을 통해 우회를 할 수 있을 것이라고 생각했다.
구글에서 검색을 통해 특정 버전의 php에서는 배열값과 비교를 하면 NULL값을 반환하는 것을 알게 되었고,
구글 검색을 통해 PHP 자료형 비교표를 볼 수 있었다.
$password에 대해 배열로 인식하게 하면 NULL값과 0을 느슨한 비교를 통해 0을 반환하는 것을 아래의 표를 통해 알 수 있다.
이를 통해 ==0이 아닌 ===0으로 비교를 할 경우 이번 문제에 대한 대응이 가능할 것이라고 생각했다.
해당 password에 대한 이름을 password[]으로 하고, password에 아무 값이나 입력하고 인증을 해봤다.
FLAG값을 확인할 수 있었고, 인증을 통해 클리어를 했다.