Wargame Site/SQL injection
-
-
-
SQL injection 바로 잡기 #5 Where 동작의 이해Wargame Site/SQL injection 2020. 3. 12. 23:09
이번에 배울 개념은 정말 중요한 개념이다. 직접 테이블을 구성해보고 실험을 해보는 것을 추천한다. 우선 하나의 질문이 있다. 이 질문에 대답을 할 수 있다면 해당 포스트를 보지 않아도 된다. Q. 위와 같은 Table 이 있을 때 다음과 같은 Query 의 동작의 결과를 설명할 수 있는가? 보통 사람들이 생각하기에 name 의 length 가 3 일 경우 4 가 들어가서 ( 4 , 'park' ) 이 출력되고, legnth 가 3 인게 아닐 경우 1 이 들어가서 ( 1 , 'kim' ) 이 출력될 것이다 라고 개념을 잘못 잡을 수 있다. 하지만, Empty set 가 출력되었다. 이 질문에 답을 하기 위해서는 우선 Where 의 동작을 잘 이해해야한다. 필자가 직접 집필한 저서에도 기록을 해놓았다. wh..
-
SQL injection 바로 잡기 #4 문자열Wargame Site/SQL injection 2020. 3. 12. 19:55
우선 수업을 진행하면서 문자열의 직접적인 언급이 필터링되어 있는 문제에 대해서 해결책을 크게 4가지 제시했다. 0x 표현 역슬래시 표현 ike 활용 concat 활용 crackus 5 번 문제에서 다음과 같이 admin 의 사용이 막혀있는 것을 알 수 있다. 0x표현 0x 표현은 문자열로 바뀌는 것을 알 수 있다. \ 역슬래시 활용 이스케이프 문자에 해당되는 문자를 제외하고 다른 문자들 앞에 역슬래시를 넣어줌으로써 우회가 가능하다. ( '\n' 는 Line Feed 이다. ) like 활용 LOS 11 번문제 Golem 에서 더 자세히 다루고 있다. concat 활용 Concat 이라는 함수를 통해서 admin 을 나누어서 하나의 문자열을 나타낼 수 있다. 하지만, 여기서 학생들이 자주하던 실수가 있다...
-
여러분~~!!Wargame Site/SQL injection 2019. 5. 31. 15:32
https://ridibooks.com/search/?q=%ED%95%9C%EC%8A%B9%ED%98%91 RIDIBOOKS 최고의 eBook 서비스, 리디북스! 200만 권의 eBook, 특별반값 도서, 최신 베스트셀러에서 빌려보는 만화/판무/잡지, 내 문서파일 (PDF/TXT/ePub) 뷰어 기능까지! ridibooks.com 드디어 제 스스로 집필한 책이 나왔습니다 !! 106 페이지 분량이고요, 처음해보는 단독출판이라 미숙한 점이 있다면 피드백해주세요 ㅎㅎ 이 링크를 통해서 접근할 수 있습니다. 로그인만 하시면 공짜로 받을 수 있으니까 많은 다운 부탁드릴게요 ㅎㅎ 피드백은 언제나 환영입니다 !! ^^
-
SQL injection 바로 잡기 #3 Bool ValueWargame Site/SQL injection 2019. 5. 20. 14:29
MySQL 에서 Bool 값은 그 값이 정해져 있다. True 는 1 이고, False 는 0 이다. 그러면 다음 세 개의 Query 에서 혼동이 올 수 있다. 1. where 123 2. where 123 = True 3. where 123 = False 1 번 Query 는 Where True 의 의미를 가집니다. (의미만!) 하지만, 2 번 Query 는 Where False 과 같습니다. 3 번 Query 또한 Where False 와 같습니다. 왜.... 이런 현상이 발생할까요? 바로 0이 아닌 모든 상수는 True 로 취급하지만, True 는 모든 상수가 아니기 때문입니다. 이 점을 미루어 봤을 때, where 1 = True 는 where True 로 동작합니다. 만약 -1
-
SQL injection 바로 잡기 #2 문자와 숫자의 비교Wargame Site/SQL injection 2019. 5. 20. 11:36
MySQL 에서 비교를 할 때 발생하는 잘못된 개념을 바로잡아보자! 문자와 문자 문자와 숫자, 문자와 BOOL 이 두 경우의 차이를 바로 잡아야한다. 문자와 문자를 비교할 때는 우리가 알고 있는 방식으로 작동한다. 하지만, 문자와 숫자 혹은 Bool 값이 동작할 때는 의외의 결과가 나온다. 기본적으로 작은따옴표 안의 값들을 우리는 문자열이라고 부른다. '123' 과 '124' 는 같지 않다. 문자열 끼리의 연산은 냉정하다(?)!! 한 자라도 다르면 False 를 반환한다. 하.지.만 문자와 숫자를 비교할 때 만약 문자열이 숫자로 시작하는 경우, 숫자가 아닌 부분까지의 값을 숫자로 숫자와 비교한다. 예를들어, '123ab' 는 123 과 같은 값이 나온다는 것이다. 이 부분을 잘 짚고 넘어가야 한다.