[WEB] XPath (XML Path Language)

2023. 1. 22. 12:25·Web/Web Hacking Techniques

XPath 란 무엇인가??

XPath란 XML Path Language의 준말로 말 그대로

XML 문서의 특정 요소나 속성에 접근하기 위한 경로를 지정하는 언어이다.

쉽게 말해 XML에 질의를 하거나 XML DB의 내용을 선택 및 수정이 가능하다.

 

XPath는 3가지 특징을 가지고 있는대 아래와 같다.


1. XPath는 XML 문서를 탐색하기 위해 경로 표현식을 사용한다.

2. XPath는 수학, 문자열 처리 등을 하기 위한 표준 함수 라이버러리를 내장하고 있다.

3. XPath는 W3C 표준 권고안인 XSLT에서 가장 중요한 부분 중 하나이다.


또한 XPath는 여러 종류의 노드가 존재한다.

  • 루트 노드
  • 요소 노드
  • 텍스트 노드
  • 속성 노드
  • 주석 노드
  • 네임스페이스 노드
  • 처리명령 노드

이러한 노드들을 이용하여 XPath에서는 문서의 노드나 노드 셋을 선택하기 위해 다양한 

표현식을 사용하게 된다.

여기서 노드셋이란 중복을 허용하지 않는 노드들의 순서 없는 집합을 의미한다.

위치 경로를 통해 각 노드의 위치를 지정할 수 있으며, 상대경로와 절대경로로 나눌 수 있다.

노드 이름 해당 '노드 이름'과 일치하는 모든 노드를 선택함.
/ 루트 노드부터 순서대로 탐색해 나감.
// 현재 노드의 위치와 상관없이 지정된 노드에서부터 순서대로 탐색해 나감.
. 현재 노드를 선택함.
.. 현재 노드의 부모 노드를 선택함.
@ 속성 노드를 선택함.
위치 경로가 / 하나로 시작하게 되면 단 하나의 요소만을 가리키는 절대 경로를 나타낸다.

위와 같이 위치 경로를 지정했을 때 찾고자 하는 노드를 위해 검색 방향을 설정하여야 한다.

이는 현재 노드를 기준으로 어느 방향으로 나갈지를 명시한다.

색 방향 설명
self 현재 노드를 선택함.
attribute 현재 노드의 속성 노드를 모두 선택함.
namespace 현재 노드의 네임스페이스 노드를 모두 선택함.
child 현재 노드의 자식 노드를 모두 선택함.
descendant 현재 노드의 자손 노드를 모두 선택함.
descendant-or-self 현재 노드와 현재 노드의 자손 노드를 모두 선택함.
following XML 문서에서 현재 노드의 종료 태그 이후에 등장하는 모든 노드를 선택함.
following-sibling 현재 노드 이후에 위치하는 형제 노드를 모두 선택함.
parent 현재 노드의 부모 노드를 선택함.
ancestor 현재 노드의 조상 노드를 모두 선택함.
ancestor-or-self 현재 노드와 현재 노드의 조상 노드를 모두 선택함.
preceding XML 문서에서 현재 노드 이전에 등장하는 모든 노드를 선택함. (조상 노드, 속성 노드, 네임스페이스 노드는 제외함)
preceding-sibling 현재 노드 이전에 위치하는 형제 노드를 모두 선택함.

(이미지 인용 : http://www.tcpschool.com/lectures/img_xml_axes.png)

이제 해당 노드를 선택하기 위해 경로 표현식을 사용한다.

Syntax
검색방향::노드테스트[필터표현식]
  • 검색방향 : 현재 노드를 기준으로 노드를 검색할 방향 전달
  • 노드 테스트 : 검색 방향에 존재하는 해당 노드 검색
  • 필터 표현식 : 검색된 노드 셋에서 특정 노드나 특정 값을 포함하는 노드 선택

ex) attribute::version - 현재 노드의 version 속성 노드를 선택함

 

 

 

내용 출처 및 참고 사이트
https://ko.wikipedia.org/wiki/XML
https://aws.amazon.com/ko/what-is/xml/
http://www.tcpschool.com/xml/

※ 내용이 이상하거나 문제가 있을 경우, 또는 설명에 부족한 내용이 있으시면 알려 주시면 감사합니다.

저작자표시 (새창열림)

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

backup Vulnerability (백업 취약점)  (0) 2023.01.29
Webpack Vulnerability (웹팩 취약점)  (0) 2023.01.28
RequestsBin (+Using requestsbin with XSS)  (0) 2023.01.27
[WEB] DOM (Document Object Model)  (0) 2023.01.22
[WEB] XML (eXtensible Markup Language)  (0) 2023.01.21
'Web/Web Hacking Techniques' 카테고리의 다른 글
  • Webpack Vulnerability (웹팩 취약점)
  • RequestsBin (+Using requestsbin with XSS)
  • [WEB] DOM (Document Object Model)
  • [WEB] XML (eXtensible Markup Language)
g2h
g2h
  • g2h
    감자 텃밭
    g2h
  • 전체
    오늘
    어제
    • 분류 전체보기 (144) N
      • Network (4)
      • Web (31) N
        • Web Hacking Techniques (31) N
      • System (32)
        • Tips (11)
        • System Hacking Techniques (21)
      • Pentest (14)
        • Pentest (14)
      • WriteUP (47)
        • sec (0)
      • 도구|Tools (12)
      • Security Issue (3)
      • 1-Day-Analysis (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    cross side script
    sql
    web hacking
    해킹
    CTF
    skt 해킹
    XSS
    스캔
    침투테스트
    권한상승
    Hacking
    Encoding
    해킹도구
    취약점 스캔
    dom based xss
    vulnability
    load of sqlinjection
    DoM
    SQL Injection
    Metasploit
    스캐닝
    내부침투
    Reflected XSS
    Los
    모의해킹
    취약점
    Kioptrix
    NOSQL
    nosql injection
    해킹툴
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
g2h
[WEB] XPath (XML Path Language)
상단으로

티스토리툴바