본문 바로가기

보안/해킹

XPath 개념 및 실습(1)

XPath는 XML 문서에서 특정 엘리먼트나 속성에 접근하기 위해 경로를 지정하는 언어이다.

윈도우에서 특정 디렉토리의 파일에 접근하기 위해서 탐색기를 이용하여 디렉토리 및 파일내용을 검색하듯이, XML문서도 트리구조로  구조화 되어 있기 때문에 XPath라는 약속된 경로표기법을 이용하여 데이터를 검색할 수 있다.

검색하는 방법으로는 루트요소부터 특정 요소가지 경로를 지정하는 절대결로(/)와 현재 위치부터 특정요소까지 경로를 지정하는 상대경로(..)를 이용한다.

 

https://www.w3schools.com/xml/xpath_examples.asp

 

XPath Examples

XPath Examples Let's try to learn some basic XPath syntax by looking at some examples. The XML Example Document We will use the following XML document in the examples below. "books.xml": www.w3schools.com

위 사이트는 해킹 기술 및 프로그래밍을 실습할 수 있도록 제공된 사이트이다.

https://www.w3schools.com/xml/books.xml

위의 상기 XML 정보 중 각 구조체 안의 변수를 확인하여 어떤 방식으로 데이터 검색을 할 지 생각하고 유추해보자!!!

 

실습_1

해당 홈페이지에서 예제_1의 "Try it Yourself"를 실행해라.

예제_1의 "Try it Yourself" 실행

위와 은 코드 결과 페이지가 나왔을 것이다.

여기서 Key Point 로서 path 변수를 확인하면 예제_1의 "/bookstore/book/title"을 확인할 수 있습니다.

프로그래밍을 조금이라도 배워 봤으면 이 것이 무엇을 의미하는지 짐작되는 사람들이 있을 수 있습니다.

바로, 상단 상기 XML의 Structure를 활용하여 검색을 할 수 있다는 것으로 사용되는 path 변수로 눈치 챘을 겁니다.

즉, "/bookstore/book/title" -> "/bookstore/book/author", "/bookstore/book/year"로 응용할 수 있다는 것을 알 수 있습니다.

 

예제 사이트에서 목록을 클릭 후 "Chainge Orientation"을 실행하면 고정된 코드가 변경가능한 코드로 변환하는 것을 확인할 수 있습니다. 

그 후 응용 코드로 코드를 변경 하고 실행해 봅시다.

path = "/bookstore/book/author"

 

글쓴이는 author 검색을하기 위해 path의 변수를 변경하고 실행을 하니 위와 같이 저자의 내용이 검색될 수 있었습니다.  이와 같이 XPath를 활용하면 Proxy에서 path 변경을 통해서 사용자가 서버의 데이터를 효율적으로 검색할 수 있으며 이는 서버 관리자 입장에서는 데이터 유출로 이어질 수도 있다.