웹 모의해킹/SQL Injection

서버에 보낸 질의문의 결과가 참, 거짓에 따라 다른 응답을 주는 경우 사용할 수 있는 공격이다. 다른 SQL Injection 공격이 가능한 환경 모두에서 사용할 수 있는 공격기법이다. 1. 취약점 확인 예로 로그인 페이지에서 user라는 아이디가 존재한다 가정했을 때, ID 입력창에 user' and '1'='1을 입력하면 참, user' and '1'='2 를 입력하면 거짓이라는 결과가 도출될 것이다. 이 때, 출력되는 결과가 다르다면 Blind Based SQL Injection이 가능함을 알 수 있다. user' and '1'='1 참 user' and '1'='2 거짓 2. Blind Based SQL Injection에 사용되는 함수 (1) limit select * from users lim..
데이터베이스 시스템에서 제공하는 에러를 이용하여 정보를 탈취하는 방법이다. 1. Error 출력 여부 확인 입력이 주어지는 페이지에서 논리적으로 잘못된 구문을 입력하는 경우 Error가 출력되는지 우선 확인한다. 출력이 되어야 Error based SQL Injection을 수행할 수 있기 때문이다. 만약 논리적으로 에러인 구문을 입력했을 경우 Error가 출력되면 "~ syntax error ~"가 출력된다. 이 때 mysql에서 에러를 유도하여 공격에 쓰이는 함수는 Updataxml과 Extractxml 함수로 공격 방법은 아래와 같다. 2. Updatexml 을 이용한 SQL Injection updatexml(xml_target, xpath_expr, new_xml) updatexml 함수는 지정..
UNION Based SQL Injection은 게시판의 검색 입력에서 많이 사용되는 공격기법이다. 게시판에서의 검색 내용은 DB 안에서 보통 '%____%' 사이에 삽입되는데, 이런 구조상의 취약점을 이용하여 공격한다. 1. 게시판 취약점 파악 게시판의 검색창에 문장을 입력했을 때 위에서 언급한 대로 '%____%' 사이에 삽입되는 구문인지부터 파악한다. SELECT * FROM board WHERE search like %_$sentence_%' 와 같은 쿼리문일 것이라고 예상하고 검색어%' and '1%=1 이라는 문장을 검색창에 입력했을 때, 정상적으로 작동할 경우 SELECT * FROM board WHERE search like '%검색어%' and '1%=1%' 로 우리가 예상한 쿼리문이 사..
●식별과 인증 - 식별 : 데이터에서 특정 데이터를 구분하는 작업 - 인증 : 특정 서비스를 이용하려는 사람이나 응용 프로그램의 신분을 확인하는 작업 ※SQL Injection 식별 처리과정 5가지 1. 식별 &인증 동시 진행 아이디 식별과 패스워드를 통한 인증을 동시에 진행한다. 2. 식별 & 인증 분리 아이디로 식별을 진행한 후에 DB에서 꺼내온 패스워드 정보와 입력한 패스워드 정보가 일치하는지 비교하여 인증한다. 3. 식별 & 인증 동시 진행 with hash 아이디 식별과 패스워드 인증을 동시에 진행하되, 입력한 패스워드를 해시값으로 변환시킨 뒤 DB에 저장되어 있는 해시화된 패스워드와 일치하는지 비교하여 인증한다. 해시함수로 아직까지 안전한 sha256을 사용하였다. 4. 식별 & 인증 분리 w..
SQL Injection이란? 웹 클라이언트의 반환 메시지를 이용하여 불법 인증 및 정보를 유출하는 공격. 웹 응용 프로그램에 강제로 구조화 조회 언어(SQL) 구문을 삽입하여 내부 데이터베이스(DB) 서버의 데이터를 유출 및 변조하고 관리자 인증을 우회할 수도 있다. 이 공격은 MS SQL 서버뿐만 아니라 모든 관계형 데이터베이스 관리 시스템(RDBMS)에서 가능하다. [네이버 지식백과] SQL 주입 공격 [SQL injection, -注入攻擊] (IT용어사전, 한국정보통신기술협회) 방법1. 논리 기호 사용 로그인 페이지에서 아이디와 패스워드를 입력받고 입력받은 내용을 위와 같은 sql문에 삽입하여 실행한다. 만약 아이디로 user1, 패스워드로 password1을 입력했다고 가정을 해본다면 아래와 같..
mysql 실행 관리자 계정으로 mysql을 실행한다. (exit 명령으로 탈출할 수 있다.) 데이터베이스 생성 mysql에 데이터베이스를 생성한다 > create database [데이터베이스명] DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci 데이터베이스 확인 현재 mysql에 저장된 데이터베이스들 정보를 출력한다. 아까 생성한 chDB가 존재하는 것을 확인할 수 있다. 사용자 생성 > create user [사용자명] identified by '[패스워드]'; > GRANT ALL PRIVILEGES ON [데이터베이스명].* TO '[사용자명]'@'localhost' identified by '[패스워드]'; 위처럼 권한을 부여해주지 않으면 해당 데이터베이스에 사용..
째로스
'웹 모의해킹/SQL Injection' 카테고리의 글 목록