본문 바로가기
웹 해킹/CTF

[HackCTF] Input Check

by L3m0n S0ju 2021. 9. 16.

 

 

 

 

문제에 접속하면 flag를 입력하라는 문구가 출력되지만 flag를 입력하면 필터링에 걸린다. 소스 코드를 보면 Array Type이라는 힌트가 있다. 구글에 php array type 취약점이라고 검색하면 strcmp 취약점이 결과로 나온다 strcmp 취약점이란 strcmp에 비교 구문에 문자열이 아닌 배열을 넣으면 반환 값이 0이 되버리는 취약점을 말한다. 예시는 아래와 같다.

 

 

 

 

 

 


출처: https://lactea.kr/entry/php-strcmp%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%B7%A8%EC%95%BD%ED%95%9C-%EC%9D%B8%EC%A6%9D%EC%A0%88%EC%B0%A8

https://3v4l.org/

 

위 그림을 보면 버전 php 5.3 버전부터 결과가 yes로 바꼈는데 결과가 yes란 의미는 strcmp 함수가 배열 "asdfasdf"와 문자열 admin을 같다고 판단한 것이다. 그 이유는 배열이 인자로 들어가면 strcmp는 php 5.3버전부터 NULL을 반환하는데 아래 그림을 보면 NULL==0은 TRUE이므로 yes라는 결과가 출력됩니다.

 

 

 

 

 


 

== 값만 비교

 

 

 

=== 형식도 같은지 비교

 

 

 


http://ctf.j0n9hyun.xyz:2033/?text[]=hello를 입력하면 Null이 반환되고 0==Null이므로 플래그가 출력될 것 같지만 출력되지 않습니다. 대신 text[]=flag를 입력하면 플래그가 출력됩니다.

 

 

'웹 해킹 > CTF' 카테고리의 다른 글

[HackCTF] 가위바위보  (0) 2021.10.17
[HackCTF] Home  (0) 2021.10.17
[HackCTF] Time  (0) 2021.09.16
[HackCTF] 마법봉  (0) 2021.09.12
[HackCTF] Guess me  (0) 2021.09.10

댓글