2019. 8. 5. 05:06ㆍ카테고리 없음
새벽 5시에 적고있는데 날아가버렸다... 이래서 저장하는 습관을 길러야 하나보다.
http://wargame.kr:8080/strcmp/
http://wargame.kr:8080/strcmp/
wargame.kr:8080
일단 문제 제목부터 strcmp다. strcmp 함수의 취약점부터 찾아봤는데 바로 나온다.
https://johyungen.tistory.com/57
php strcmp() 함수 취약점
*strcmp() 0보다 작음 = string1이 string2보다 작음 0 = string1이 string2와 같음 0보다 큼 = string1이 string2보다 큼 ------------------------------------
johyungen.tistory.com
대충 읽어보면 strcmp는 두 string의 값을 비교해 주는 함수이고 인자에 배열을 넣고 함수를 돌리면 NULL이 반환된다는 내용이다.
강조한 부분만 보면 post로 password 변수의 값을 받아서 기존의 password변수와 같이 strcmp를 돌리고 그 값이 0이 되면 flag를 출력해준다. PHP에서 0==NULL이기 때문에 (하지만 0===NULL을 해버리면 거짓(0) 이 나온다.) post로 받는 password의 형태를 배열로 바꿔주면 된다. 그러나 우리가 post에 모든 값을 압력해봐도 형태는 string으로 변함이 없기에 post로 받는다는 점을 이용하여 프록시에서 password=""를 password[]=""으로 바꿔 형변환을 시켜버릴 것이다. 버프 수트같은 프로그램으로 프록시를 설정하고
더미값을 넣어 chk버튼을 눌러주면
이렇게 잘 잡힌다. 이제 password=dummy_value를 password[]=dummy_value로 바꾸고 Forward하자.