آموزش کامل Xpath Injection attach

  • شروع کننده موضوع salatin
  • تاریخ شروع
S

salatin

Guest
#1
قسمت اول

ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

زبان XML

همانطور که مطلع هستید اگر ما بخواهیم حملات SQLInjection انجام بدیم نیاز به دانستن ساختار و دانش پایگاه داده مثل (جداول، سطرها، ستون و..) هستیم در حملات XPath Injection هم به همین صورت نیاز به درک اصطلاحات، ساختار و دانش اولیه در مورد XML است.

در پایین مقدمه ای برای درک اصطلاحات XML از سایت w3schools.com گرفته شده است.

  • XML مخفف زبان نشانه گذاری Extensible Markup Language است
  • XML یک زبان نشانه گذاری شبیه به HTML است.
  • XML برای ذخیره و انتقال اطلاعات طراحی شده است
  • تگ‌های XML از قبل تعریف نشده‌اند، خودتان‌ باید تگ ها را تعریف کنید.
  • XML به صورت خود توصیفی (self-descriptive) طراحی شده است.


XMLهیچ کاری انجام نمی‌دهد!

مثال زیر متنی است از طرف mary برای ajax با XML نوشته شده:



1. <note>

2. <to>Ajax</to>

3. <from> Mary </from>

4. <heading>Reminder</heading>

5. <body>Don't forget me this weekend!</body>

6. </note>


متن بالا یک متن خود‌ توصیفی است. این متن اطلاعاتی در مورد ارسال کننده (from) و دریافت کننده (to) دارد و همچنین دارای یک عنوان (heading) و یک پیغام (body) است.

اما این سند XML هنوز هیچ کاری انجام نمی‌دهد و تنها یکسری اطلاعات است که درون تگ‌ها قرار گرفته، یک نفر باید برای ارسال، دریافت یا نمایش این سند برنامه‌ای بنویسد.



توسط XML شما تگ‌ های خودتان را می‌سازید

تگ‌ های مثال بالا مثل <to> و <from> در هیچ استانداردی برای XML تعریف نشده‌اند. این تگ ‌ها توسط نویسنده این سند XML ساخته شده‌اند به دلیل این که زبان XML هیچ تگ از پیش تعریف شده‌ای ندارد.

تگ‌هایی که درون HTML استفاده می‌شوند از قبل تعریف شده‌اند. یک سند HTML فقط می‌تواند از تگ‌هایی استفاده کند که در استاندارد HTML تعریف شده باشند مثل <h1> ،<p> و ...

XML اجازه می‌دهد که نویسنده خودش ، تگ ها و همچنین ساختار سند را تعریف کند.



تفاوت بین XML و HTML

  • XML برای توصیف داده‌ها و تمرکز بر محتوای داده‌ها طراحی شده است.
  • HTML برای نمایش داده‌ها و نحوه‌ ی نمایش داده‌ها طراحی شده است.
  • HTML مخصوص نمایش داده‌ ها است در حالی که XML مخصوص انتقال اطلاعات است.
 
S

salatin

Guest
#2
XPath

قبل از یادگیری XPath، ابتدا باید XSL را که مخفف extensible Stylesheet Language است را درک کنیم که همانند CSS برای HTML است.

در اسناد HTML، تگ های از پیش تعریف شده مانند table، div، span و غیره... استفاده می شود. مرورگر می- داند که چگونه آن ها را (با استفاده از CSS) نمایش دهد.

همانطور که گفته شد در اسناد XML، تگ ها از پیش تعریف نمی شوند به منظور درک و به رسمیت شناختن یک سند XML، کنسرسیوم جهانی وب، XSLرا توسعه داده است که می تواند به عنوان یک زبان Stylesheet مبتنی بر XML عمل کند. یک سند XSL مشخص می کند چگونه یک مرورگر باید سند XML را ارائه دهد.



بخش های اصلی XSL

  • XSL برای تبدیل اسناد XML به انواع دیگر سند استفاده می شود.
  • XPath برای سرچ و بازیابی داده ها در اسناد XML استفاده می شود.
  • XSL-FO برای فرمت XML اسناد استفاده می شود.


پس XPath یک زبان پرس و جو است که برای آدرس دهی و سرچ اطلاعات در یک سند XML استفاده می شود.



در هنگام کار با XPath، باید نکات زیر را در نظر داشته باشید:

  • XPath یک عنصر اصلی در استاندارد XSLT است
  • XSLT نمی تواند بدون XPath کار کند.
  • XPath مبتنی بر XQuery و XPointer است.
 
S

salatin

Guest
#3
اصطلاحات XPath

گره ها (nodes)

درXPath، هفت نوع گره وجود دارد: عنصر، ویژگی، متن، فضای نام، پردازش، نظر، و گره های سند.

  • Root
  • Element
  • Text
  • Attribute
  • Comment
  • Processing Instruction
  • Namespace
اسناد XML به عنوان درختان گره به محسوب می شوند. بالاترین عنصر درخت عنصر ریشه (root) است.



به سند XML زیر نگاه کنید:

code:
<?xml version="1.0" encoding="UTF-8"?> 


<bookstore> 


<book> 


<title lang="en">Harry Potter</title> 


<author>J K. Rowling</author> 


<year>2020</year> 


<price>29.99</price> 


</book> 


</bookstore>

مثال گره در سند XML بالا :

code:
<bookstore> (root element node) 


<author>J K. Rowling</author> (element node) 


lang="en" (attribute node)

ارزش های ریز (Atomic values)

مقادیر اتمی، گره های بدون فرزند یا والدین است.

مثال مقادیر ریز :

1. J K. Rowling

2. "en"
آیتم ها (Items)

آیتم ها، مقادیر اتمی یا گره ها هستند.



رابطه گره ها (Relationship of Nodes)

1.والدین (Parent)

هر عنصر و ویژگی یک والد دارد.

در مثال زیر: عنصر book، والدین title, author, year, price است.

code:
<book> 


<title>Harry Potter</title> 


<author>J K. Rowling</author> 


<year>2020</year> 


<price>29.99</price> 


</book>





2.فرزندان (Children)

گره های عنصر ممکن است صفر، یک یا چند فرزند داشته باشند.

در مثال زیر: title, author, year, price همه فرزندان عنصر عنصر book هستند.

code:
<book> 


<title>Harry Potter</title> 


<author>J K. Rowling</author> 


<year>2020</year> 


<price>29.99</price> 


</book>



3.هم نژاد (Siblings)

گره هایی که والدین مشابه دارند.

در مثال زیر: title, author, year, price همه هم نژاد هستند.

code:
<book> 


<title>Harry Potter</title> 


<author>J K. Rowling</author> 


<year>2020</year> 


<price>29.99</price> 


</book>

4. اجداد (Ancestors)

والدین گره، پدر و مادر والدین و غیره

در مثال زیر:عنصر bookstore اجداد title, author, year, price و book است.

code:
<bookstore> 


<book> 


<title>Harry Potter</title> 


<author>J K. Rowling</author> 


<year>2020</year> 


<price>29.99</price> 


</book> 


</bookstore>
 
بالا