wargame.kr - 7 (strcmp)

2021. 2. 27. 17:47정보보안/웹 해킹

wargame.kr - 7 (strcmp)

일곱번째 문제다.

 

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

 

strcmp 함수를 bypass 할 수있따면 flag를 획득할 수 있다고 한다.

 

Start 버튼을 눌러보자.

입력창과 버튼이 존재하고 하단에 view-source 가 있다.

view-source를 눌러 소스코드를 확인해보면 다음과 같다.

 

strcmp 함수를 통해 입력받은 패스워드값과 $password 값과 같을경우

flag를 획득할 수 있는것 같다.

하지만 나는 $password의 값을 알 수없고 이를 우회해서 문제를 해결해야 하는데,

if(strcmp()) 구문을 보면 ===(엄격한 비교)가 아닌 ==(느슨한 비교)를 이용하고 있다.

이 때문에 strcmp에서 취약점이 발생하는데

프록시툴인 burpsuite를 이용해 확인하면 다음 그림과 같이$_POST['password'] 는 password=파라미터값으로 나타난다.

 

정상의 경우

 

 

비정상의 경우

하지만 password= 가 아닌 password[]= 로 바꾸어 준다면 배열이 되어 취약점이 발생하게 된다.

정상 → strcmp(STRING, STRING)

비정상 → strcmp(STRING, 배열)

 

비정상의 경우 반환되는 값은 NULL로 

if문에서 NULL==0은 참이 되기 때문에 우회에 성공하게된다.

 

 

플래그 획득

 

플래그 입력

 

 

 

완료