1. 程式人生 > >通過sqli-labs學習sql注入——基礎挑戰之less1

通過sqli-labs學習sql注入——基礎挑戰之less1

前言:     

      之前只是簡單瞭解過SQL注入,只僅僅侷限於會使用sqlmap等注入工具,但是手工注入方面就懂的很少了,所以準備通過sqli-lab這個注入平臺的學習好好研究下常見的手工注入方面的知識

環境準備:

     Phpstudy (PHP+Apache+Mysql)

     Sql-lab

首先了解下基礎知識:

URL編碼:

      因為在瀏覽器中,當我們訪問一個網址的時候,瀏覽器會自動將使用者輸入的網址進行URL編碼,因為Http協議中引數的傳輸是"key=value"這種鍵值對形式的,所以會將“=”,“#”等字常見的字元進行URL編碼。等號的URL編碼為%23,空格是%20,單引號是%27, 井號是%23,雙引號是%22等,(詳情可參考

http://www.w3school.com.cn/tags/html_ref_urlencode.html)

因為涉及到Mysql資料庫,在插入資料庫語句時會用到Mysql資料庫的註釋符

MySQL支援三種註釋方式:

      1.從‘#'字元從行尾。

      2.從‘-- '序列到行尾。請注意‘-- '(雙破折號)註釋風格要求第2個破折號後面至少跟一個空格符(例如空格、tab、換行符(用%20或者+表示空格)等等)。

      3.從/*序列到後面的*/序列。結束序列不一定在同一行中,因此該語法允許註釋跨越多行。

瞭解SQL手工注入的基本流程:

1、首先判斷是什麼型別的注入,有沒過濾了關鍵字,能不能通過加入註釋符繞過

2、接著獲取當前資料庫使用者,版本,當前連線的資料庫等資訊。

3、然後一般是獲取使用者賬戶密碼的那個資料庫表的資訊

4、接著獲取列資訊

5、最後就獲取資料了

為了方便學習檢視,可以在原始碼中的$sql下一句語句寫以下php語句(就是輸出拿到資料庫查詢的完整語句是怎麼樣的)

echo "你的 sql 語句是:".$sql."<br>";

image