sql手工注入原理

2021-09-26 19:24:25 字數 1748 閱讀 1703

純粹一些個人練習心得,所以今天就寫一篇部落格記錄一下

數值型

1.url輸入 and 1=1 / and 1=2 回顯頁面不同(整形判斷)

如果頁面執行錯誤,則說明此 sql 注入為數字型注入。

因為當我們輸入 and 1=1時,後台執行 sql 語句:

如:select * from 《表名》 where id = x and 1=1

沒有語法錯誤且邏輯判斷為正確,所以返回正常。

當輸入 and 1=2時,後台執行 sql 語句:

select * from 《表名》 where id = x and 1=2

語句被帶進資料庫進行查詢,雖然沒有語法錯誤但是邏輯判斷為假,所以返回錯誤,這時候我們就可以基本確定頁面存在sql注入。

字元型

如這是一條後台語句:$sql=「select * from users where id='1 』 limit 0,1」;

可以看出,id被單引號包裹住

如果後台語句是:get_id=』$id』這樣子傳

那麼 ?id=』1』 1就是$id 裡面的值 這時候要注入可以這樣

?id=』   1 然後在id的引號裡面構造攻擊語句    』

如?id=1' union select 1,2,3,4 --+' // 這條語句的作用是聯合查詢第1,2,3,4列, 空格--+的作用是注釋後面的內容

如 在url位址列輸入?id=1』 這時候 1後面的單引號把原本語句的一對單引號隔開了,所以頁面會出現異常或者報錯

但這時候,如果我們在1』後面加–+注釋掉它後面的單引號( ?id=』1 『 --+ 』),讓它語句後台的語句一致,這樣子就不會報錯了,同理,也可用這個方法來驗證是不是屬於字元型sql注入

正常的url:

1左右是有單引號包裹住的 我們在url欄輸入原本語句的單引號不會顯示,如果我們輸入的是這樣子:?id=1』 --+

而後台會這樣子顯示 : id=』1』 --+』

所以我們可以這樣子 ?id=1』 這裡寫攻擊語句 --+?

本來id=』 』 是這樣子的

後來我們在id=』 在裡面插入語句 』

如果我們輸入i』 那麼id是這樣子的 id=』 1』 』 這樣子語句就形成不了閉合了,會報錯,如果報錯了,證明這條語句成功被帶進資料庫查詢

這時候我們可以這樣子 id=』 1 『 --+ 』 --+ 把後面的單引號注釋掉了,這樣子就會形成閉合

聯合查詢

我們可以這樣子

?id=-1』 union select 1,2,3 --+ 這樣子就可以形成一條帶進資料庫的查詢語句了

聯合查詢要構造假的 所以1前面一定要加-號,因為有兩條select語句,要用-號或者把1改為0把前面的注釋掉

就是有兩條select查詢一句,要前面的那條錯誤無法使用,後面的注入一句才能顯示這樣子

當前面的id=1錯誤會執行後面的id=2,二後面的id=2錯誤會執行前面的id=1

或者=0也行

如果注入頁面沒有反應,無論是字元型還是數字型,都可以在前面加-號或者改為0試試

19.9.13

SQL手工注入原理(二)

靶機 metasploitable2 sql手工注入原理 一 low等級 if isset get submit 此時瀏覽器不會返回資料庫報錯資訊!正常輸入 錯誤輸入 不會提示錯誤!1 and 1 1 1 and 1 2 1 or 1 1 1 or 1 2 1 order by 3 1 order ...

SQL手工注入

site xx.cn inurl asp?id 找文章 xx.cn pth onews.asp?id 243 試注入 xx.cn pth onews.asp?id 243 order by 10 xx.cn pth onews.asp?id 243 order by 20 order by 語句用於...

sql注入 手工注入

表示式 描述union 將查詢結果進行聯合輸出,追加在列尾 union all load 檔案讀取 into outfile 檔案寫入 datadir 資料庫檔案存放路徑 user 當前使用者 version 資料庫版本 database 資料庫名稱 表示系統變數 資料庫 表名描述 informat...