본문 바로가기

ETC/EVI$ION

EVI$ION 정규 세션 과제 - #4

1. https://dreamhack.io/wargame/challenges/328

 

[wargame.kr] strcmp

Description if you can bypass the strcmp function, you get the flag.

dreamhack.io

 

일단 문제 사이트를 들어가보면 이렇게 소스코드를 볼 수 있다.

 

php코드이다.

문제 이름이기도한 strcmp(a,b)함수는 두 개의 문자열을 비교하는 함수이다.

a가 b보다 작으면 음수 값, b가 a보다 작으면 양수 값, a와b가 같으면 0을 반환한다.

 

소스코드의 이 부분을 보면 strcmp가 0일 때 플래그가 출력된다는 사실을 알 수 있다.

 

php에서는 strcmp의 파라미터로 배열을 넣는 경우 NULL 값이 반환된다고 한다.

또한 NULL과 0을 == 연산자를 이용해서 비교했을 때 true를 리턴하기 때문에

이러한 strcmp 함수의 취약점을 이용하면 문제를 풀 수 있다.

 

 

개발자 도구를 실행해 배열 형태로 바꿔주었다.

그리고 아무런 값을 넣고 chk를 눌러주었더니

플래그를 얻을 수 있었다!