IMyoungho 2018. 3. 11. 22:02

이번문제는 strcmp이다


제목이 제목인 만큼 제목에 취약점이 있다는것이 힌트같았다.


해당 취약점을 검색하기 전에 source를 주어주었다.



source를 보니 password와 $password값을 비교해서 0 즉 같으면 flag값을 준다는 것을 알 수 있었다.


php5.3버전에서의 strcmp취약점은 비교대상 둘중 하나가 array에 들어가면 내부적으로 충돌이 발생해 null을 리턴하게되는데


이때 null과 0을 비교하면 같다고 본다는 점이 취약점이다.



위의 그림은 ==와 === 비교를 나타낸 표이다. 

표시된 부분을 보면 NULL과 0은 TRUE로 반환하는 부분이 보여진다.

      ===일때는 FALSE이다. (===를 사용하자!) 


이를 이용해서 둘중하나를 array로 만들면 된다는걸 알 수 있었다.


버프수트를 사용하던지 관리자모드를 사용해서 일단은 값을 아무거나 넣어보았다



password 부분이 보였다.




이부분을 password[]로 수정해준뒤 진행하였다.


Flag값이 나왔다. (일부러 flag값을 다나오지 않게하였다)



반응형