목록웹 해킹/SQL Injection (47)
Oh! JUN
6) 특수 문자 검증 우회 기법 1. 싱글 쿼터(') 문자 검증 우회 싱글 쿼터 문자 사용이 반드시 필요한 예시 SELECT * FROM board WHERE title like '%test%' 싱글 쿼터 문자 사용이 필요 없는 예시 SELECT * FROM board WHERE idx=100 SELECT * FROM board WHERE title like '%test%' SELECT * FROM board order by idx desc ※ 예시 boardView.do?idx=100 정상 boardView.do?idx=100 and 1=1 정상 boardView.do?idx=100 and ascii(substring((select password from member where id='admin'),..
지난 시간에 이어서 이번에는 데이터 조회 공격 실습 org_filename에 사용자가 지정한 파일 이름이 출력된다고 했다. 이걸 활용해서 SQL injection 공격이 가능하다. 그림 참고하면 org_filename 파라미터에 select group_concat(id, '###', password, ',,') from members 쿼리가 들어가서 members 테이블의 id, password 컬럼을 그룹핑해서 한번에 구할 수 있게 했다. real_filename에는 지난시간처럼 실질적인 파일 다운로드 경로를 설정해줬다. 여기서 잠깐 만약 real_filename을 모른다면 어떻게 해야될까? blind-sql 인젝션을 통해서 구해주면된다. org_filename 데이터 구하기 1+and+ascii(su..
※실습환경 #디렉터리 구조 htdocs ㄴsqli_down ㄴ upload ㄴcaf98268abd13bb8ed384da0313e2dd6.jpg ㄴ download.php ㄴ index.php #index.php Download page [Donwload] #download.php
※ MYSQL은 연결연산자가 특정기호가 없기 때문에 사용불가 ★ 되도록이면 INSERT, UPDATE, DELETE 구문은 사용하지 않는게 좋음. (데이터를 건들 수 있어서... 잘못하면 큰일남) ERROR-BASED MSSQL 공격 예시 1. INSERT INTO board VALUES('Data', ''+convert(int, @@version)+'', 'DATA') 2. UPDATE board SET title='DATA', content=''+convert(int, @@version)+''...WHERE idx=100 3. UPDATE board SET title='', content=''... WHERE idx=@@version 4. DELETE FROM board WHERE idx=@@vers..
지금까지 다중 레코드를 한번에 출력할 수 없기 때문에 순차적 레코드를 사용해서 하나씩 출력했는데 이번에 그룹핑을 활용해 한번에 출력시킬것이다. DBMS FUCTION MYSQL GROUP_CONCAT() MSSQL FOR XML PATH(), STRING_AGG() ORACLE LISTAGG() MSSQL 예시 1) FOR XML PATH 함수 사용 예시 select '###' + name from sysobjects where xtype='u' FOR XML PATH('') - STUFF 활용 예시(앞의 ### 제거) select stuff((select '###' + name from sysobjects where xtype='u' FOR XML PATH('')),1,3,'') 2) STRING_AG..
Primarykey-Based-SQL Injection이란 이름에서 예상할 수 있다시피 테이블 제작할때 Primarykey를 활용하는 방법이다. 해당 게시판에서의 PK는 idx이다. 공격 쿼리를 보면 ' and idx=ascii(substr((select user from dual),1,1))-- PK = ASCII 대입시켜서 참인경우 게시물이 검색되는 방법을 활용한 blind 공격이다. 그러다보니 PK의 범위가 ASCII에서 특수문자+숫자+대문자+소문자가 포함되어 있는 범주인 32~126가 포함되어야 공격가능하다. Burp 잡아서 ctrl + i 단축키 활용하면 Intruder로 넘어가게 되는데 clear § 누르고 여기서 반복되는 부분에 Add §를 두 번 추가하면 반복시킬 때 이 부분을 변수처럼 활..
Combination Technique Combination 1 ★Combination 2★ Combination 3 Combination 4 Content-Based + Response-Based + Time-Based Content-Based + Response-Based Content-Based + Time-Based Response-Based + Time-Based 기준4개 기준3개 Blind-SQL Injection 기법인 Content-Based, Response-Based, Time-Based중에서 여러개를 조합해서 Multiple Search Technique을 구현할 수 있다. 하지만, 이전에도 언급했다시피 Time-Based 기법은 시스템 환경에 따라 기준점이 다를 수 있고, 무엇보다도..
기존 blind_Sql_Injection은 기준을 하나 정하고 '참' 또는 '거짓'으로 판별을 했는데 문제가 시간이 굉장히 오래걸린다. 비트 데이터 추론 기법을 사용해도 7번을 '참' 또는 '거짓'을 확인해야 문자를 하나 알아낼 수 있다. 정보량이 적다면 문제되지 않지만 많을수록 카운트 하나 줄이는데 단축되는 시간이 크다. 그래서 이번에는 Multiple Search Technique 기법을 활용해서 카운트를 줄여볼것이다. 위 기법을 사용하기 위해서는 '참' 또는 '거짓'이 판별될 수 있는 기준이 2개 이상이 필요하다. 기존에는 '참'이면 'test1'이 출력되고 '거짓'이면 에러가 발생하거나 게시글이 존재하지 않는다. 로 판단할 수 있었는데 Multiple에서는 '참' '거짓'으로 'test1', 't..