PHP strcmp() Vulnability

2025. 4. 30. 15:44·Web/Web Hacking Techniques

strcmp() 함수란?

두 문자를 비교하여, 그 결과를 반환해주는 함수이다. string1이 string2보다 작으면 음수를 반환하고 string1이 string2와 같으면 0을 반환한다. string1이 string2보다 크면 양수를 반환하게된다.
int strcmp(string1, string2);

 

  • Returns -1 if string1 < string2
  • Returns 0 if string1 === string2
  • Returns +1 if string1 > string2

 와 같이 동작한다.

취약점이 발생하는 구간

if (strcmp($_POST['passwd']), '$checkpass') == 0){
	login()
}

 

위와 같이 login 함수를 호출하기 전에 if 조건이 수행된다고 가정해보자.

POST 방식으로 입력 받은 패스워드를 기존에 저장되어 있던 패스워드와 비교하고 비교한 결과를 strcmp() 함수의 반환 값 0 즉, 동일한 경우에 login() 함수가 호출되는 큰 문제가 없어 보이는 코드이다.

 

이 때 if문을 자세히보면 == 이라는 비교문자를 사용하고 있다.

이는 Type juggling 라는 취약점과도 동일하며, 잘못된 동작으로도 이어질 수 있따.

우선 악의적인 사용자가 $_POST('passwd'] 를 제어할 수 있게되면, 해당 검증 코드를 우회할 수 있다.

 

$_POSTP['passwd']를 서버측에 전송하게되면 passwd=test와 같이 전달되지만, passwd[]=''와 같이 Array(배열) 형식으로 전송하게 되면 strcmp()함수는 Array(배열)과 string(문자열)을 비교하며 이에 따른 반환값으로 NULL을 반환하게 된다.

 

PHP의 ==을 통한 비교 결과를 확인해보면 null == 0은 true가 된다.

 

이를 통해 if문을 통과하게되며, 검증을 우회할 수 있다.

이를 보완하기 위해서는 정확한 비뵤문인 ===을 사용해야 한다.


Reference

  • https://www.php.net/manual/en/types.comparisons.php
  • https://cybernetgen.com/auth-bypass-with-php-type-juggling/

 

저작자표시 (새창열림)

'Web > Web Hacking Techniques' 카테고리의 다른 글

PHP Functuion (mysql_real_escape_string OR Magic Quotes) Bypass  (0) 2025.04.30
PHP Type Juggling Magic Hash  (0) 2025.04.30
언어별 취약 시스템 명령어  (0) 2025.04.30
Ruby-regular-expression(newline)[\n]  (0) 2025.04.30
[WEB] Ajax (Asynchronous JavaScript And XML)  (0) 2023.02.24
'Web/Web Hacking Techniques' 카테고리의 다른 글
  • PHP Functuion (mysql_real_escape_string OR Magic Quotes) Bypass
  • PHP Type Juggling Magic Hash
  • 언어별 취약 시스템 명령어
  • Ruby-regular-expression(newline)[\n]
g2h
g2h
  • g2h
    감자 텃밭
    g2h
  • 전체
    오늘
    어제
    • 분류 전체보기 (144) N
      • Network (4)
      • Web (31) N
        • Web Hacking Techniques (31) N
      • System (32)
        • Tips (11)
        • System Hacking Techniques (21)
      • Pentest (14)
        • Pentest (14)
      • WriteUP (47)
        • sec (0)
      • 도구|Tools (12)
      • Security Issue (3)
      • 1-Day-Analysis (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    권한상승
    Los
    스캐닝
    취약점 스캔
    해킹
    내부침투
    vulnability
    모의해킹
    DoM
    CTF
    Encoding
    Kioptrix
    XSS
    sql
    dom based xss
    cross side script
    Hacking
    Reflected XSS
    skt 해킹
    SQL Injection
    load of sqlinjection
    해킹툴
    취약점
    NOSQL
    nosql injection
    web hacking
    Metasploit
    해킹도구
    스캔
    침투테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
g2h
PHP strcmp() Vulnability
상단으로

티스토리툴바