


Contoh terperinci penggunaan kaedah alias dalam suntikan pangkalan data Oracle
Artikel ini membawakan anda pengetahuan yang berkaitan tentang Oracle terutamanya memperkenalkan penjelasan terperinci tentang penggunaan kaedah alias dalam suntikan pangkalan data Oracle, termasuk pernyataan asas maklumat pertanyaan Oracle dan rownum pada ciri dan sebagainya, saya harap ia akan membantu semua orang.
Tutorial yang disyorkan: "Tutorial Video Oracle"
1 Pangkalan Data Oracle, juga dikenali sebagai Oracle RDBMS, atau singkatannya Oracle. Pangkalan data ini adalah produk Oracle Ia mempunyai fungsi yang berkuasa dan operasi yang kompleks. Ia adalah percuma untuk digunakan tetapi perkhidmatan tersebut pada masa ini, ia biasanya digunakan oleh syarikat besar di China, seperti bank, institusi kewangan, dan syarikat industri data besar.
Ringkasan ciri Oracle:
1. Oracle perlu mengikut nama jadual apabila menggunakan bahasa pertanyaan untuk mendapatkan maklumat Ini serupa dengan Access Jika tiada jadual, anda boleh menggunakan jadual dwi. Dual ialah jadual maya Oracle yang digunakan untuk membentuk pilih. Oracle menjamin bahawa akan sentiasa ada satu rekod dalam dwi Jika anda menanyakannya secara langsung, ia hanya akan memaparkan data Semasa menanyakan, jenis data pada kedudukan yang sepadan mesti konsisten dengan jenis data lajur dalam jadual Anda juga boleh menggunakan NULL untuk menggantikan beberapa kedudukan jenis data yang tidak dapat diteka dengan cepat. Ini serupa dengan SQL Server. 3. Oracle berbeza daripada mysql. Tiada had dalam paging, tetapi sarang pertanyaan tiga lapisan digunakan untuk mencapai paging 4. Simbol komen satu baris Oracle ialah simbol komen berbilang baris 5. Pangkalan data Oracle; beberapa Jadual sistem ini menyimpan nama jadual dan nama lajur pangkalan data sistem, seperti lajur_tab_pengguna, lajur_tab_semua, semua_jadual, jadual_pengguna Jadual sistem menyimpan semua jadual dan nama lajur pengguna, di mana nama_jadual mewakili nama Jadual sistem, nama_lajur ialah. nama lajur yang wujud dalam sistem; 6. Oracle menggunakan rentetan penyambungan (diwakili oleh pengekodan dalam URL), dan fungsi itu juga boleh menyambung dua rentetan; 7. Dalam Oracle, perpustakaan telah dilemahkan dan pengguna telah diperkukuhkan Pembezaannya adalah berdasarkan pengguna. Pemahaman mudah ialah nama pengguna semasa adalah bersamaan dengan nama perpustakaan dalam pangkalan data lain.
2 Pengenalan kepada alias
(1) Penyataan asas untuk maklumat pertanyaan Oracle
Tanya semua jadual
Tanya semua jadual pengguna semasa
Tanya semua medan select * from all_tables
Tanya medan pengguna semasa select * from user_tables
Semak versi Oracle semasa select * from all_tab_columns
(2) rownum Ciri-ciri select * from user_tab_columns
Memandangkan tiada had dalam Oracle, rownum diperlukan untuk memilih data tertentu semasa menanyakannya. Sebagai contoh, masukkan dahulu: select * from v$version
Kami melihat bahawa halaman mengeluarkan banyak data, tetapi kebanyakannya bukan yang kami perlukan, jadi dengan andaian saya hanya mahukan 4 yang pertama kepingan data, kemudian Ubah suai pernyataan seperti berikut: select * from all_tables
Jadi dengan mengandaikan kita hanya memerlukan sekeping data kedua, bolehkah kita memasukkan di mana rownum=2? tak boleh. Ini kerana rownum bukan nama medan jadual, tetapi nombor baris hasil pertanyaan Setiap kali terdapat hasil dalam pertanyaan, baris pertama, baris kedua, baris ketiga, dll. akan menjadi lalai. Rownum ini ialah nombor baris , bukan kepunyaan medan tertentu, jadi rownum ialah contoh pseudo yang sentiasa bermula dengan 1, rownum>n, apabila n>1, keadaan tidak boleh diwujudkan. Untuk situasi ini, dua kaedah boleh digunakan iaitu kaedah ketaksamaan dan kaedah alias.
Apabila menggunakan pernyataan pertanyaan, kita sering meminta untuk mengembalikan n rekod pertama dalam jadual atau rekod tengah Contohnya, dalam jadual besar (dengan mengandaikan terdapat 1W keping data), kita perlu menanyakan rekod daripada 1000. ke 1005. . Menghadapi pertanyaan seperti ini, apakah yang perlu kita lakukan? Setiap pangkalan data mempunyai penyelesaiannya sendiri Sebagai contoh, dalam mysql, arahan had digunakan untuk halaman keputusan, dalam MSSQL, TOP digunakan untuk halaman keputusan, dan Oracle terutamanya menggunakan arahan rownum untuk menyelesaikan masalah ini. Mari kita lihat cara untuk mengeluarkan data yang ditentukan dalam oracle. select * from all_tables where rownum<h2 id="Kaedah-tidak-sama"> (3) Kaedah tidak sama </h2>
<p>Masukkan arahan ini dalam platform gerudi oracle dalam talian (di sini adalah untuk menanyakan semua medan pengguna semasa): <br><code>select* from user_tab_columns
Keputusan memaparkan semua jadual semasa dan nama medan yang sepadan Jika saya hanya mahu memaparkan kandungan jadual ADMIN, saya boleh memasukkan: select* from user_tab_columns where table_name='ADMIN'
Jika saya hanya mahu. paparan Bagaimana untuk memasukkan sekeping data kedua? Jelas sekali tidak mungkin untuk menambah keadaan rownum=2 secara langsung Di sini anda boleh menggunakan kaedah ketaksamaan untuk bertanya: select* from user_tab_columns where table_name='ADMIN' and COLUMN_NAME'UNAME
Dari sini kita juga dapat melihat bahawa kaedah ketaksamaan ialah. Kelemahannya ialah kaedah ini hanya boleh digunakan apabila jumlah data adalah sangat kecil. Apabila jumlah data adalah sangat besar, kaedah aliasing yang diperkenalkan di bawah perlu digunakan.
(4) Kaedah Alias
Mari kita lihat kenyataan ini: select column_name,rownum n from user_tab_columns
Selepas ayat ini melaksanakan nama lajur pertanyaan , pertanyaan akan Hasilnya dinomborkan secara berurutan dari atas ke bawah bermula dari 1, tetapi memandangkan rownum itu sendiri bukan medan, ia dinamakan n di sini. Dengan cara ini, fungsi pernyataan pertanyaan ini adalah untuk menanyakan nama lajur dan nombor baris yang sepadan dengan setiap nama lajur, dan menyimpan nombor baris secara seragam dalam medan n.
Ambil perhatian bahawa walaupun kami telah mencipta medan baru n untuk menyimpan nombor baris pada masa ini, ia tidak akan berfungsi jika kami menambah syarat serta-merta selepasnya, seperti di mana n=7, kerana pernyataan ini perlu dilaksanakan sebelum n boleh didapati Medan ini, jadi jika anda ingin menggunakan medan n untuk menanyakan maklumat, anda perlu meletakkan pernyataan ini secara keseluruhan dalam subkueri pernyataan lain Dengan cara ini, selepas ayat itu dilaksanakan, terdapat n medan, dan kemudiannya boleh digunakan oleh ayat lain .
Sekarang kita mula-mula menanyakan beberapa medan dalam jadual ADMIN, masukkan seperti ini: select column_name,rownum n from user_tab_columns where table_name='ADMIN'
Hasil pertanyaan di sini akan mendapat dua nama medan. Nombor baris ialah alias n yang kami ambil, jadi medan pertama ialah nama medan sebenar, dan medan kedua ialah alias n yang kami ambil.
Contohnya, hasil subkueri ialah:
字段名 | 行号 |
---|---|
aa | 1 |
bb | 2 |
cc | 3 |
dd | 4 |
Kemudian hanya masukkan:
pilih * daripada subquery di mana n=2, dan anda boleh mendapatkan data bb Begitu juga, untuk data yang anda mahu, hanya buat n sama dengan nombor yang sepadan.
Oleh itu, selagi ayat ini ditulis sebagai subkueri, dan pernyataan pertanyaan luaran digunakan untuk menanyakan hasil subkueri ini, biarkan n=2, medan kedua boleh diperolehi, jadi masukkan: select * from (select column_name,rownum n from user_tab_columns where table_name='ADMIN')where n=2
Medan kedua berjaya disoal.
Nota: Apabila kaedah alias digunakan untuk menamakan rownum n, kaedah penulisan standard ialah menggunakan rownum sebagai n Untuk menjadi lebih ringkas, hanya rownum n, dipisahkan dengan ruang.
Alias boleh digunakan semasa menanyakan medan, tetapi bolehkah ia digunakan semasa menanyakan nama jadual? Jawapannya ya.
Contoh: select table_name,rownum n from user_tables
Dapat dilihat bahawa mengaliaskan jadual adalah sama dengan mengaliaskan medan, dan penggunaannya sebenarnya serupa, jadi saya tidak akan pergi ke butiran di sini.
3. Operasi Praktikal di Lapang Menembak
Perkara di atas hanyalah asas teori Dalam operasi sebenarnya, ia tidak semudah itu jarak menembak untuk operasi sebenar.
Mengambil Fengshentai sebagai contoh, alamatnya di http://o1.lab.aqlab.cn/?id=1
(1) Tentukan sama ada suntikan SQL
telah masuk julat penangkapan, Melihat bahawa terdapat parameter GET dalam bar alamat, sudah tentu, mula-mula cuba lihat jika terdapat input SQL:
Masukkan selepas id=1:
dan 1=1, halaman bergema seperti biasa
dan 1=2, Gema halaman tidak normal
Tukar id=1 kepada id=2-1 dan gema halaman adalah normal.
Maksudnya mesti ada SQL injection.
(2) Tanya bilangan medan pada halaman semasa
Dalam pertempuran sebenar, kami tidak tahu pangkalan data apa tapak web sasaran, jadi kenapa perlu bersusah payah dan menganggapnya sebagai MYSQL Lakukan sahaja, jadi di sini kita mula-mula menanyakan bilangan medan:
Masukkan order by 1
dan gema halaman adalah normal; tidak normal;
Masukkan order by 5
dan gema halaman adalah normal;
menunjukkan bahawa bilangan medan pada halaman semasa ialah 4. order by 4
(3) Cuba pertanyaan bersama order by 5
Masukkan selepas id=1:
1 |
|
1 |
|
1 |
|
Cuba buat laporan halaman semasa sebagai ralat untuk melihat jika terdapat sebarang salah jajaran paparan:
Tiada salah jajaran paparan yang jelas kelihatan.
Teruskan menaip:
1 |
|
Halaman mengembalikan pengecualian, menunjukkan bahawa medan kedua bukan jenis angka.
Teruskan menaip:
1 |
|
Halaman mengembalikan pengecualian, menunjukkan bahawa medan kedua bukan jenis rentetan.
Sebenarnya, pangkalan data Oracle mempunyai banyak jenis data, seperti nilai berangka, rentetan, tarikh, binari, dan teks yang besar di sini.
1 |
|
Didapati halaman tersebut memaparkan masa baharu.
1 |
|
Apabila anda melihat masa seperti ini, anda perlu memikirkan cap waktu, kerana komputer mula mengira saat dari pukul 8 pada 1 Januari 1970.
(4) Nama jadual pertanyaan
Gunakan fungsi suntikan ralat untuk bertanya maklumat, masukkan:
1 |
|
ADMIN Teruskan masuk:
1 |
|
BERITA.
Jadual akhir untuk menentukan pengguna semasa ialah:
ADMIN, NEWS, MD5
1 |
|
(五)查询字段名
接下来查询字段,ADMIN表显然更可能有我们想要查询的信息,因此先查询ADMIN表的内容,输入:
1 |
|
得到第一个字段名为:UNAME
把n改为2继续输入:
1 |
|
得到第二个字段为UPASS
把n改为3,继续输入:
1 |
|
得到第三个字段为MD5
把n改为4,继续输入:
1 |
|
没有结果了。可见ADMIN表中的字段为:UNAME、UPASS、MD5
(六)根据字段查询具体数据
字段和表名都有了,接下来查询具体的数据,为了方便,还是用别名法来查询:
1 |
|
注意报错函数的特殊性,因此这里不能用*来代替UNAME。
通过改变n的值可以得到UNAME中的全部用户名为:OCI、NF、QQ123。
用同样的方法继续查询UPASS字段的内容,输入:
1 |
|
改变n的值可以得到UPASS字段的三条记录分别为:e10adc3949ba59abbe56e057f20f883e
2a61f8bcfe7535eadcfa69eb4406ceb9
654321
在cmd5.com中解密后结果分别为:
123456、未查到、654321
(七)提交flag
把每个md5值都提交到靶场,最终确定flag为:2a61f8bcfe7535eadcfa69eb4406ceb9
四、小结
渗透测试人员在进行数据库注入时,总是会遇到查询指定数据的问题,对于不同的数据库虽然查询方法大同小异,但是很多细节如果没有搞好是很难完成渗透的,这就需要每一位渗透测试人员夯实理论基础,掌握每一种常用的方法,在面临实际问题的时候才能游刃有余。
本文重点介绍了Oracle数据库的特点以及注入时常用的别名法,分享了别名法在靶场中实操的过程,并分享了一个在线执行Oracle命令的平台希望能够为各位同行或爱好者解决相关问题提供参考。
推荐教程:《Oracle视频教程》
Atas ialah kandungan terperinci Contoh terperinci penggunaan kaedah alias dalam suntikan pangkalan data Oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tempoh pengekalan log pangkalan data Oracle bergantung pada jenis log dan konfigurasi, termasuk: Buat semula log: ditentukan oleh saiz maksimum yang dikonfigurasikan dengan parameter "LOG_ARCHIVE_DEST". Log buat semula yang diarkibkan: Ditentukan oleh saiz maksimum yang dikonfigurasikan oleh parameter "DB_RECOVERY_FILE_DEST_SIZE". Log buat semula dalam talian: tidak diarkibkan, hilang apabila pangkalan data dimulakan semula dan tempoh pengekalan adalah konsisten dengan masa berjalan contoh. Log audit: Dikonfigurasikan oleh parameter "AUDIT_TRAIL", dikekalkan selama 30 hari secara lalai.

Fungsi dalam Oracle untuk mengira bilangan hari antara dua tarikh ialah DATEDIFF(). Penggunaan khusus adalah seperti berikut: Tentukan unit selang masa: selang (seperti hari, bulan, tahun) Tentukan dua nilai tarikh: tarikh1 dan tarikh2DATEDIFF(selang, tarikh1, tarikh2) Kembalikan perbezaan hari

Urutan permulaan pangkalan data Oracle ialah: 1. Semak prasyarat 2. Mulakan pendengar 3. Mulakan contoh pangkalan data 5. Sambungkan ke pangkalan data; . Dayakan perkhidmatan (jika perlu );

Jumlah memori yang diperlukan oleh Oracle bergantung pada saiz pangkalan data, tahap aktiviti dan tahap prestasi yang diperlukan: untuk menyimpan penimbal data, penimbal indeks, melaksanakan pernyataan SQL dan mengurus cache kamus data. Jumlah yang tepat dipengaruhi oleh saiz pangkalan data, tahap aktiviti dan tahap prestasi yang diperlukan. Amalan terbaik termasuk menetapkan saiz SGA yang sesuai, saiz komponen SGA, menggunakan AMM dan memantau penggunaan memori.

Jenis data INTERVAL dalam Oracle digunakan untuk mewakili selang masa Sintaksnya ialah INTERVAL <precision> <unit> Anda boleh menggunakan operasi tambah, tolak, darab dan bahagi untuk mengendalikan INTERVAL, yang sesuai untuk senario seperti menyimpan data masa dan. mengira perbezaan tarikh.

Untuk mencari bilangan kemunculan aksara dalam Oracle, lakukan langkah-langkah berikut: Dapatkan jumlah panjang rentetan Dapatkan panjang subrentetan di mana aksara berlaku; daripada jumlah panjang.

Kaedah menggantikan rentetan dalam Oracle adalah dengan menggunakan fungsi REPLACE Sintaks fungsi ini ialah: REPLACE(string, search_string, replace_string). Langkah penggunaan: 1. Kenal pasti subrentetan yang akan diganti; Penggunaan lanjutan termasuk: penggantian berbilang, kepekaan huruf besar, penggantian aksara khas, dsb.

Keperluan konfigurasi perkakasan pelayan pangkalan data Oracle: Pemproses: berbilang teras, dengan frekuensi utama sekurang-kurangnya 2.5 GHz Untuk pangkalan data yang besar, 32 teras atau lebih disyorkan. Memori: Sekurang-kurangnya 8GB untuk pangkalan data kecil, 16-64GB untuk saiz sederhana, sehingga 512GB atau lebih untuk pangkalan data yang besar atau beban kerja yang berat. Storan: Cakera SSD atau NVMe, tatasusunan RAID untuk lebihan dan prestasi. Rangkaian: Rangkaian berkelajuan tinggi (10GbE atau lebih tinggi), kad rangkaian khusus, rangkaian kependaman rendah. Lain-lain: Bekalan kuasa yang stabil, komponen berlebihan, sistem pengendalian dan perisian yang serasi, pelesapan haba dan sistem penyejukan.
