Dasar-dasar dari XPath untuk XPath Injection 2

chmood
Dasar-dasar dari XPath untuk XPath Injection 2
Mulai dari nama dewa saya "Allah" yang paling dermawan paling penyayang

Ini adalah bagian kedua dari dasar-dasar untuk XPath Injection, dalam tutorial ini kita akan mempelajari permintaan dasar XPath.

Judul dalam dokumen ini:

  • Memilih Node Dalam XPath
  • Dasar XPath Pernyataan
  • Predikat Dalam XPath
  • Memilih diketahui Jalur
  • Memilih Beberapa Jalur
  • Pengantar Injection di XPath Query

Sekali lagi kita akan mengambil beberapa referensi dari W3s kemudian setelah kita memahami pertanyaan dasar kita akan belajar bagaimana untuk menyuntikkan mereka.

XML Contoh Dokumen
Kami akan menggunakan dokumen XML berikut dalam contoh di bawah ini.

<? Xml version = "1.0" encoding = "UTF-8"?>

<Toko buku>

<Book>
<Title lang = "eng"> Harry Potter </ title>
<Harga> 76,99 </ harga>
</ Buku>

<Book>
<Title lang = "eng"> Belajar XML </ title>
<Harga> 22,95 </ harga>
</ Buku>

<Book>
<Title lang = "eng"> Belajar XPath </ title>
<Harga> 30,20 </ harga>
</ Buku>

<Book>
<Title lang = "eng"> Belajar Rahasia Suntikan </ title>
<Harga> 50.99 </ harga>
</ Buku>

<Book>
<Title lang = "eng"> Belajar Pemrograman </ title>
<Harga> 53,45 </ harga>
</ Buku>

</ Toko buku>



memilih Nodes

XPath menggunakan ekspresi jalan untuk memilih node dalam dokumen XML. simpul yang dipilih dengan mengikuti jalan atau langkah-langkah. Ekspresi jalan yang paling berguna tercantum di bawah ini:

ekspresi Keterangan
nodename: Pilih semua node dengan nama "nodename"
/: Memilih dari simpul akar
//: Memilih node dalam dokumen dari node saat ini yang cocok dengan pilihan di mana pun mereka berada
. : Memilih node saat
..: Memilih induk dari node saat
@: Memilih atribut


Beberapa Dasar XPath Ekspresi

Dalam tabel di bawah ini kami telah mendaftarkan beberapa ekspresi jalan dan hasil dari ekspresi:

Jalan Ekspresi Hasil

toko buku: Pilih semua node dengan nama "toko buku"
/ Toko buku: Memilih toko buku akar elemen
Catatan: Jika jalan dimulai dengan garis miring (/) selalu merupakan jalan mutlak untuk elemen!

toko buku / book: Memilih semua elemen buku yang adalah anak-anak dari toko buku
// Buku: Memilih semua elemen buku di mana pun mereka berada dalam dokumen
toko buku // buku: Memilih semua elemen buku yang keturunan elemen toko buku, di mana pun mereka berada di bawah elemen toko buku

// @ Lang: Memilih semua atribut yang bernama lang


predikat

Predikat digunakan untuk mencari node tertentu atau node yang berisi nilai tertentu.

Predikat selalu tertanam dalam kurung persegi.

Dalam tabel di bawah ini kami telah mendaftarkan beberapa ekspresi jalan dengan predikat dan hasil dari ekspresi:

Jalan Ekspresi Hasil

/ Toko buku / buku [1]: Memilih elemen buku pertama yang adalah anak dari elemen toko buku.


/ Toko buku / buku [terakhir ()]: Memilih elemen buku terakhir yang adalah anak dari elemen toko buku


/ Toko buku / buku [terakhir () - 1]: Memilih semua elemen buku kecuali yang terakhir yang adalah anak-anak dari elemen toko buku


/ Toko buku / buku [posisi () <3]: Memilih dua elemen buku pertama yang adalah anak-anak dari elemen toko buku


// Judul [@lang]: Memilih semua elemen judul yang memiliki atribut bernama lang


// Judul [@ lang = 'eng']: Memilih semua elemen judul yang memiliki atribut bernama lang dengan nilai 'eng'


/bookstore/book[price>35.00]: Memilih semua elemen kitab unsur toko buku yang memiliki unsur harga dengan nilai lebih besar dari 35,00


/bookstore/book[price>35.00]/title: Memilih semua elemen judul elemen kitab unsur toko buku yang memiliki unsur harga dengan nilai lebih besar dari 35,00


Memilih diketahui Nodes

wildcard XPath dapat digunakan untuk memilih elemen XML tidak diketahui.
wildcard Deskripsi
* Cocok setiap node elemen
@ * Cocok setiap atribut simpul
simpul () Cocok setiap node apapun


Dalam tabel di bawah ini kami telah mendaftarkan beberapa ekspresi jalan dan hasil dari ekspresi:

Jalan Ekspresi Hasil

/ Toko buku / * Pilih semua node anak dari elemen toko buku
// * Memilih semua elemen dalam dokumen
// Judul [@ *] Pilih semua elemen judul yang memiliki atribut apapun


Memilih Beberapa Jalur


Dengan menggunakan | operator dalam ekspresi XPath Anda dapat memilih beberapa jalur.

Dalam tabel di bawah ini kami telah mendaftarkan beberapa ekspresi jalan dan hasil dari ekspresi:

Jalan Ekspresi Hasil

// Buku / judul | // Buku / harga Pilih semua gelar DAN harga elemen dari semua elemen buku
// Judul | // Harga Pilih semua gelar DAN harga elemen dalam dokumen
/ Toko buku / buku / judul | // Harga Memilih semua elemen judul elemen kitab elemen toko buku dan semua elemen harga dalam dokumen



Pengantar Injection di XPath Query


Oke jika Anda membaca konten di atas maka mari kita misalnya mengambil halaman yang mengambil beberapa masukan nama dan menunjukkan nomor telepon pengguna bahwa jika pengguna ada di file XML. Ketika menyuntikkan kita tahu bahwa untuk tipe string baik kutip tunggal atau quoute ganda akan digunakan bahwa kita dapat memeriksa dengan menggunakan ' "atau" "=" "untuk kutipan ganda dan kita dapat menggunakan' 'atau' '=' 'untuk kutip tunggal periksa baik-baik saja sehingga yang pernah bekerja kita akan mengetahui bahwa itu digunakan intenally ke query sekarang memungkinkan hanya berasumsi kueri sederhana.

/ Root / parent / sesuatu [username = 'our_input_here'] / user

Jadi username yang diambil setelah kondisi semakin username sebagai masukan. Sekarang kita tahu bahwa jika kita membuat kondisi benar menggunakan 'atau' '=' kita akan dapat melihat pengguna pertama rincian. Tapi kemudian kita ingin menghitung dengan setiap pengguna satu per satu. seperti yang kita tahu posisi () fungsi memilih setiap node satu per satu. Jadi kita dapat menggunakannya untuk menghitung setiap pengguna satu per satu. Kita mulai.

/ Root / parent / sesuatu [username = '' atau posisi () = 1 atau ''] / user
/ Root / parent / sesuatu [username = '' atau posisi () = 2 atau ''] / user
/ Root / parent / sesuatu [username = '' atau posisi () = 3 atau ''] / user
/ Root / parent / sesuatu [username = '' atau posisi () = 4 atau ''] / user
/ Root / parent / sesuatu [username = '' atau posisi () = 5 atau ''] / user


Ini adalah bagaimana kita dapat menghitung setiap pengguna satu per satu.

Saya harap Anda belajar dasar-dasar XPath dan XPath injection. Dalam tutorial berikutnya saya akan menjelaskan XPath injeksi lebih detail dan beberapa cara yang jauh lebih baik dari suntik di XPath Query.
Komentar