티스토리 뷰

웹 해킹/취약점

strcmp 취약점

삼전동해커 2020. 9. 9. 13:07

strcmp함수의 취약점에 대해 알아보장.


먼저 strcmp함수는 


int strcmp(char $str1, char $str2)으로 구성되어 있다.


return 값으로  str1 < str2   ==>   음수

str1 > str2   ==>   양수

str1 = str2   ==>   0



<?php

$pw=passwd;

$Get_pw = $_GET['pw'];

if(strcmp($pw,$Get_pw) == 0){

echo "로그인 되었습니다.";
}
else die("틀렸습니다");

?>


위와 같이 입력값을 체크하는 예제에서 strcmp의  값이 0일때만 로그인된다.

이를 우회하는 방법이 있다.


배열을 이용하는 방법이다.


EX)

http://127.0.0.1/login.php?pw[]=a


이런식으로 name을 배열로 전달하는 방법이다.

배열을 인자로 전달할 경우 리턴값은 NULL이 된다.

그럼 NULL == 0 을 비교하면 True가 반환된다.


다른 예제로


<?php

$pw=passwd;

$Get_pw = $_GET['pw'];

if(!strcmp($pw,$Get_pw)){

echo "로그인 되었습니다.";
}

else die;

?>


조건문에 !이 들어갔다.

strcmp의 값이 0이 아닌 값, 양수,음수일 때 로그인된다는 말이다.

같은 문제인데 조건을 다르게 했다.


EX)

http://127.0.0.1/login.php?pw[]=a


이 예제도 같은 방식으로 우회할 수 있다.


대응방법

 == 대신 ===을 사용하는 것이다.


'웹 해킹 > 취약점' 카테고리의 다른 글

eval 함수  (0) 2020.09.15
php include, wrapper 취약점  (0) 2020.09.14
serialize()함수 취약점(2) python  (0) 2020.09.14
serialize()함수 취약점(1) php  (0) 2020.09.14
SQL injection  (0) 2020.07.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함