通過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等,(詳情可參考
因為涉及到Mysql資料庫,在插入資料庫語句時會用到Mysql資料庫的註釋符
MySQL支援三種註釋方式:
1.從‘#'字元從行尾。
2.從‘-- '序列到行尾。請注意‘-- '(雙破折號)註釋風格要求第2個破折號後面至少跟一個空格符(例如空格、tab、換行符(用%20或者+表示空格)等等)。
3.從/*序列到後面的*/序列。結束序列不一定在同一行中,因此該語法允許註釋跨越多行。
瞭解SQL手工注入的基本流程:
1、首先判斷是什麼型別的注入,有沒過濾了關鍵字,能不能通過加入註釋符繞過
2、接著獲取當前資料庫使用者,版本,當前連線的資料庫等資訊。
3、然後一般是獲取使用者賬戶密碼的那個資料庫表的資訊
4、接著獲取列資訊
5、最後就獲取資料了
為了方便學習檢視,可以在原始碼中的$sql下一句語句寫以下php語句(就是輸出拿到資料庫查詢的完整語句是怎麼樣的)
echo "你的 sql 語句是:".$sql."<br>";