215, 1/11 회원가입  로그인  
   dudtntdud
   False Injection에 관한 질문입니다.

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=230 [복사]


Mysql 구문에서

select * from where id = 0; 을 대입할경우 모든 id값이 나오더라고요

0은 false값으로 알려져 있는데 어째서 모든 값을 출력해주는건가요.

  Hit : 3778     Date : 2017/01/18 06:01



    
jinmo123 혹시 id가 숫자가 아닌 문자열로 시작하는 문자열이 아닌가요? 그럴 경우에는 숫자 0과 비교하면 숫자로 변환해서 비교하기때문에 모두 0이랑 같게 됩니다 2017/01/18  
chaneyoon 헉 이 분 생활해킹에서도 본 것 같은데 2017/01/19  
chaneyoon mysql> select * from rank;
+------+-------+
| id | score |
+------+-------+
| aaa | 1 |
| bb | 39 |
| ccc | 349 |
| ddd | 33 |
| eee | 982 |
| fff | 2 |
| 1a | 320 |
+------+-------+
7 rows in set (0.00 sec)

이런 테이블이 있을 때 만약

select * from rank where id=0 이라는 쿼리를 실행하게 되면,

+------+-------+
| id | score |
+------+-------+
| aaa | 1 |
| bb | 39 |
| ccc | 349 |
| ddd | 33 |
| eee | 982 |
| fff | 2 |
+------+-------+

이렇게 앞에 숫자가 없는 정보들이 나오게 되고,

또 "select * from rank where id=1" 이라는 쿼리를 보내게 된다면
+------+-------+
| id | score |
+------+-------+
| 1a | 320 |
+------+-------+

이렇게 앞이 1로 시작하는 정보들을 불러오는 원리와 비슷하지 않을까 싶습니다
2017/01/19