SQL injection - 칼리리눅스 sql injection 실습
- 간단하게 아이디 입력창, 패스워드 입력창 2개를 생성하고 mysql에 접속하여 데이터 베이스 정보를 가져와서 입력한 값과 일치하는 경우 로그인 성공
문구를 띄우는 것입니다.
- mysqli_connect() : mysql에 접속하기 위한 함수, mysqli_query() : 쿼리를 입력받는 함수, mysqli_num_row() : 쿼리에 일치하는 값의 갯수를 출력
* mysql 데이터베이스 설정(maria DB) - mysql을 실행하면 maria DB로 나올 수도 있습니다.(mysql과 동일합니다.)
#service mysql start
#mysql -u root -p;
mysql> use mysql;
mysql> update user set plugin='' where user='root';
mysql> update user set password=password('toor') where user='root';
mysql> flush privileges;
* 데이터베이스 생성
mysql> create database sample;
mysql> connect sample;
mysql> create table users(username VARCHAR(100) primary key, password VARCAHR(100) not null);
mysql> insert into users values('humanist', 'toor');
mysql> quit;
#service mysql restart
- 간단하게 아이디와 패스워드를 저장하는 테이블을 생성하고 humanist 와 toor를 저장합니다.
* 메인 페이지 변경
# vi /etc/apache2/mods-available/dir.conf
- vi로 위의 경로로 진입하여 index.html을 지우고 index.php를 추가합니다. 그리고 /var/www/html의 index.html을 삭제합니다.
* 이후 reboot를 실행합니다.
* 아파치와 mysql을 다시 시작합니다.
#service apache2 start
#service mysql start
** 이후 해당 아파치 웹서버 IP 주소를 입력하여 웹페이지에 접속합니다. (localhost)
- 처음 접속하면 로그인 창이 뜹니다. 이곳에 DB에 저장된 ID : humanist와 PASS : toor를 입력합니다.
- php를 조금 변형시켜 패스워드가 뜨게 만들었습니다. 올바르게 입력하면 로그인에 성공합니다.
- 이번에는 sql injection이 가능한 문구를 입력합니다. 1'or'1 이렇게 입력합니다.
- 1'or'1라고 입력하면 로그인에 성공합니다.
** 입력된 sql문을 하나씩 풀어보면
"username = 'humanist' and password='1' or '1'" 이렇게 완성됩니다.
"참(1) and 거짓(0) or 참(1)" 아이디-참, 패스워드-거짓, 1-참
"거짓(0) or 참(1)" 참(1) and 거짓(0)은 and 조건때문에 거짓(0)
"결과 = 참" or 조건은 참이 하나만 있으면 무조건 참
** 이외에 다른 입력을 통해서 로그인도 가능합니다.
** 실습을 제외한 다른 환경에서 사용하시면 안됩니다.
'IT Security' 카테고리의 다른 글
php 게시판 만들기 (3) | 2017.10.02 |
---|---|
iOS 11 - iOS 10.2와 10.3.3버전 브로드컴 칩 취약점 발견 (0) | 2017.09.29 |
소물인터넷(Internet of Small Things) - IoT와 관계는? (0) | 2017.09.22 |
블루본(Blueborne) - 블루투스에 연결된 IOT기기 공격에 노출 (0) | 2017.09.21 |
MITM, SSL, 대칭키-비대칭키 암호화, HTTP 용어 정리 (0) | 2017.07.25 |