일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트 prototype
- 보안뉴스 요약
- python
- 자바스크립트 객체
- 자바스크립트 element api
- GIT
- 다크웹
- 랜섬웨어
- 보안뉴스
- 자바스크립트 node
- oracle db
- 보안뉴스 한줄요약
- 자바스크립트
- 깃허브
- 보안뉴스요약
- numpy
- javascript
- 파이썬
- 오라클
- Oracle SQL
- php
- 자바스크립트 API
- oracle
- 보안뉴스한줄요약
- 카카오프로젝트 100
- 카카오프로젝트100
- 카카오프로젝트
- 자바스크립트 jQuery
- 자바스크립트 기본 문법
- ES6
- Today
- Total
FU11M00N
7-7. bee-box 를 사용하여 SQL injection 알아보기! 본문
안녕하세요! 이번엔 sqli_7.php 페이지 SQL Injection (Blog) 입니다!!
먼저 SQL 인젝션은 사용자가 입력한 값을 서버에서 제대로 검증을 하지 않아
서버에서 DB의 쿼리문으로 인식하여 DB안의 정보가 노출되거나 인증이 우회되는 취약점이다.
SQL 인젝션은 사용자가 데이터를 입력할 수 있는 곳 어디에서든 발생할 수 있고 이것을 이용해
SQL 쿼리를 변수에 입력을 하여 DB안의 정보를 탈취당 할 수가 있다.
SQL injection은 인젝션 부분에서도 가장 중요한 부분이고 잘 알아야 할 부분이다!
1. 레벨 low
sqli_7.php 페이지는 입력을할수있는 'Add an entry to our blog' 필드가 있습니다
그럼 ' 를 삽입하여 sql Injection 공격이 가능한지 확인 해봅시다!
그럼 공격이 가능하다는 뜻인 신텍스 에러 문장이뜨고 'bee')' 라는 오류 내용이 출력되었습니다!
아마 'bee'가 사용자 이름인데 블로그에 글을 입력하여 사용자의 아이디를 마지막에 저장하나보네요!!
또한 URL을 보면 변수가 노출이 안되는것을 보니 POST방식으로 데이터를 전송하나봅니다!
그럼 프록시 툴인 Burp Suite를 사용하여 분석해보겠습니다!!
사진 1-5와 사진1-6을 보면 'entry' 변수와 'blog' 변수가 노출되었고 필드안에 입력한 내용은 'entry' 변수안에 들어가는것같습니다!!
그럼 'entry' 변수안에 쿼리문을 날려 sql Injection 공격을 하면 될 것같습니다!
하지만 사진 1-7와 같이 쿼리의 마지막에 사용자 아이디가 있으므로
지금까지 해오던 쿼리문을 작성하면 마지막에 'bee'가 붙어 쿼리문을 작성하여도 실행이안됩니다.
그럼 '으로 쿼리문을 닫아주고 ()을 사용하여 괄호안에 쿼리문을 작성하겠습니다!!
have a nice day!! ' ,(select password from bWAPP.users where id =1 limit 0,1))#
쿼리문은 bWAPP 의 데이터베이스에 id 컬럼의 벨류를 검색하는것입니다!
여기서 나오는 limit은 두 개의 정수가 들어가게되면 Limit 0, 1
0은 시작할 레코드의 번호입니다! (MYSQL은 0이 첫번째입니다.)
1는 반환할 결과의 수 입니다!
지금 저 쿼리문에서 limit 0,1을 빼도 되지만, 책에 나와있길래 넣었고 그에대한 설명도 간단히 했습니다!!
2. 레벨 High(대응방안)
난이도를 '상' 으로 변경하고 '를 삽입해보니 '를 쿼리문이아닌 정상적인것으로 받아들여져 '가 작성이 됩니다!
그럼 소스코드를 분석해보겠습니다!
난이도 상은 sqli_check_3으로 우회가 되고있습니다.
sqli_check_2는 mysql_real_escape_string 함수를 사용하고 있었고 이 함수는 PHP에서 제공하는 기본적인 함수이다.
SQL 문법에서 사용하는 특수 문자가 있을 경우 백 슬래시를 붙여 입력 데이터를 SQL문법으로 인식하지 않게 방어하는 기법입니다. 우회할 수 있는 문자는 'NULL , \n , \r , \ , '등입니다. 즉 ' 가 안 먹히는 이유는 '를 삽입하면 실제 서버에서는
'\으로 우회되어 SQL 쿼리문으로 인식되지 않는 것입니다!
Reference by 비박스 환경을 활용한 웹 모의해킹 완벽 실습
'Web Hacking > bee-box' 카테고리의 다른 글
[bee-box]Broken Auth. - Insecure Login Forms (1) | 2021.01.14 |
---|---|
7-8. bee-box 를 사용하여 Blind SQL injection 알아보기! (0) | 2020.03.24 |
7-6. bee-box 를 사용하여 SQL injection 알아보기! (0) | 2020.03.23 |
7-5. bee-box 를 사용하여 SQL injection 알아보기! (0) | 2020.03.23 |
7-4. bee-box 를 사용하여 SQL injection 알아보기! (0) | 2020.03.22 |