針對于sql注入的學(xué)習(xí)——從0開始

首先要問:sql注入是什么?

sql注入就是利用錯誤的sql語句(錯誤的sql語句,就是跟網(wǎng)站開放人員設(shè)定的代碼不一樣)進行獲取數(shù)據(jù)庫里面的內(nèi)容(我們一般都學(xué)過了mysql,mysql里要建庫、建表、建字段、建值,這是mysql的四大板塊 庫、表、列、值),

像我們經(jīng)常進入的網(wǎng)站、用戶賬號、密碼、頭像,還有管理員的賬號、密碼什么的都保存在數(shù)據(jù)庫里,(通過設(shè)置數(shù)據(jù)庫與網(wǎng)站的設(shè)置,使得網(wǎng)站有建立自己的數(shù)據(jù)庫,)

如何判別是否可以進行sql注入

(這里我借用一下掌控安全的封神臺靶場,
鏈接:[封神臺 - 掌控安全在線演練靶場,是一個在線黑客攻防演練平臺。 (zkaq.cn)](https://hack.zkaq.cn/battle/target?id=c0c45746e7d351bc
我們一開始進入一個網(wǎng)站頁面,是正常頁面,然后我們在id=1后面輸入了一個'(單引號)發(fā)現(xiàn)頁面不一樣了,這時候我們就可以判斷這里存在sql注入

image.png

將id改為2,這時我們就可以得到id=2的用戶的信息
image.png

and 進行判斷

?id=1 and 1=1 (mysql也是有and語句的 就是前面和后面都正確則輸出,id=1正確,1=1也正確)
?id=1 and 1=2(?id=1正確,1=2錯誤 不正確)

1=1 和1=2 兩個頁面不一樣則可以判斷存在sql注入(圖片上的%20是網(wǎng)頁自動將空格轉(zhuǎn)換為%20了,無影響)


判斷
image.png

單引號進行判斷

同樣也是沒有單引號的頁面 和添加了單引號的頁面不一樣,則說明存在sql注入
以下圖片是添加了單引號后的界面,這說明他將'(單引號)也在sql語句中執(zhí)行了


image.png

至此,我們已經(jīng)知道了該網(wǎng)頁存在sql注入漏洞,那么我們就可以進行第二步了

找到該表中是有幾列

order by (order by 本身是一個排序函數(shù),但我們可以通關(guān)order by 來猜出該表中有多少列
如:select * from users order by 5
我們在使用sql語句的時候,必須要與該表中所設(shè)定的列數(shù)相等,不相等的話,sql語句則不能執(zhí)行


image.png

已知 該 users表中 列為5列 分別為 Id、username、mobile、password、crate_time,我們可以使用union select (聯(lián)合查詢)來繼續(xù)輸出后面的


image.png

這次我們輸出一下數(shù)據(jù)庫名
image.png

但是如果我們union select 1,2,3,4的話,與原本的列數(shù)不照應(yīng),那么就不能運行sql語句,所以我們才需要先使用order by 語句來進行判別該表有幾列
image.png

在回到我們這個靶場,使用order by 3頁面是正常的,說明至少有3列,然后order by 4發(fā)現(xiàn)頁面不正常了,說明沒有第4列,這樣我們就知道了該表有3列


image.png

image.png

我們已經(jīng)知道該表有3列,那么我們就可以進入第三步,使用union select 1,2,3來找到顯示位

那么有人疑惑了,什么叫做顯示位?
顯示位就是 該表中有3列,但是,在該網(wǎng)頁他只輸出了幾列,并沒有把每一列的數(shù)據(jù)都輸出在頁面上,我們將輸出到頁面上對應(yīng)的列的內(nèi)容叫做顯示位

image.png

?id=1 and 1=2 union select 1,2.3
為什么不是直接 ?id=1 union select 1,2,3呢,為什么要 and 1=2?
因為一個網(wǎng)頁在這個輸出的位置,他只有一個,他只會輸出test和mima(id=1的用戶名和密碼)我們想要他輸出的2,3被覆蓋掉了(可以查詢到,但是該頁面只能輸出一個,所以2,3可以被查到,但是不能被輸出),and 1=2 利用了and 語句 1=2 是錯誤的,所以 id=1 and 1=2 不會被執(zhí)行,這樣就只會執(zhí)行 union select 1,2,3.這樣就可以知道顯示位是在哪里
COLLATION_CHARACTER_SET_APPLICABILITY
知道了顯示位,那么我們就可以進入第四步。進行爆庫、爆表、爆列名、爆數(shù)據(jù)
我們已經(jīng)知道第2列和第3列是顯示位,那么我們就可以使用這兩者任意一列,這里我選擇了第3列,也就是密碼處
爆庫(得出:error)
?id=1 and 1=2 union select 1,2,database()


image.png

爆表(error_flag,user)
?id=1 and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()

?id=1 and 1=2 union select 1,2,table_name from information_schema.tables where table_schema=database()

image.png

現(xiàn)在大多mysql(版本在5.幾的一般都包含information_shema)若沒有這個information_schema就會難搞,現(xiàn)在的基本上都有
information_schema包含了所有的數(shù)據(jù)庫
information_schema.tables包含了所有的數(shù)據(jù)表
information_schema.columns包含了所有的字段名
所有我們就可以使用from infromation什么的進行,在這個大范圍里面進行查找使用

group_concat()
沒有使用group_concat(),只獲取了一個值,而使用了group_concat()可以獲取所有的值
(原理:一個空只能輸出一個,而group_concat()將不同的值用,’逗號‘隔開,組成了一個新的值,這個值包含了所有,所有滿足一個空輸出所有的值)


image.png

爆字段名(Id,flag)
很明顯,erroe_flag,這明眼人基本就知道了flag在這個里面,那么我們就開始爆字段名(爆列名),若不明顯的話,就需要我們一個一個實驗

id=1 and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='error_flag'

image.png

爆值(zKaQ-Nf,zKaQ-BJY,zKaQ-XiaoFang,zKaq-98K)

id=1 and 1=2 union select 1,2,group_concat(flag) from error_flag

image.png

就這樣flag的值就出來了
這么多值,我們就需要一個一個去提交試試
如flag{zKaQ-Nf}

總結(jié):

第一步,找注入點,判斷是否存在sql注入
第二步,判斷該網(wǎng)頁中的表是由幾列
第三步,找顯示位
第四步,進行爆庫、爆表、爆列名、爆值

最后在提示一點,上面的代碼,爆庫爆表什么的代碼,都是套路,學(xué)會復(fù)制粘貼,修改關(guān)鍵值就可以使用

若 列不同,就就在增添一個
若表名不同 就修改表名就行
就可以運行sql語句
就可以先收集這,等使用的時候就可以直接粘貼修改

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • sql注入筆記! 判斷是否存在注入漏洞 經(jīng)典的單引號判斷。 select * from xx where id= ...
    Emily0917閱讀 247評論 0 0
  • 成績單 輸入1,2,3發(fā)現(xiàn)都會顯示不同的成績單,輸入4沒有東西,輸入1’沒有東西顯示,輸入1’#又有了,測試了一下...
    Glarcy閱讀 2,150評論 0 0
  • 知識梳理 SQL注入原理:用戶輸入的數(shù)據(jù)可以被拼接到原有代碼執(zhí)行 SQL注入基本流程: (1). 判斷注入點,例:...
    虛晃一槍騙過上帝閱讀 901評論 0 0
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂有人憂愁,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,879評論 28 54
  • 信任包括信任自己和信任他人 很多時候,很多事情,失敗、遺憾、錯過,源于不自信,不信任他人 覺得自己做不成,別人做不...
    吳氵晃閱讀 6,391評論 4 8

友情鏈接更多精彩內(nèi)容