sqli_lab

sql注入淺談

sqli_lab做題體會

1.1

什麼是sql注入?

SQL注入攻擊是黑客對數據庫進行攻擊的常用手段之一。隨着B/S模式應用開發的發展,使用這種模式編寫應用程序的程序員也越來越多。但是由於程序員的水平及經驗也參差不齊,相當大一部分程序員在編寫代碼的時候,沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。用戶可以提交一段數據庫查詢代碼,根據程序返回的結果,獲得某些他想得知的數據,這就是所謂的SQL Injection,即SQL注入。SQL注入是從正常的WWW端口訪問,而且表面看起來跟一般的Web頁面訪問沒什麼區別,SQL注入的手法相當靈活,在注入的時候會碰到很多意外的情況,需要構造巧妙的SQL語句,從而成功獲取想要的數據。

2.1

sql注入


2.1.1 發現注入點

2.1.2 爆庫

2.1.3 爆表

2.1.4 爆字段

2.1.1 發現注入點

  1. 先找到注入點,以sqli_lab 1-4 爲例,在地址欄輸入?id=1 發現出現了用戶名和密碼,如圖所示:

    之後開始判斷是那種類型的注入點,那麼問題來了,注入類型一般分爲幾種?就mysql而言 可以大體分爲:整型注入,顯錯式注入,布爾型注入。

0x001

今天主要講解下整型注入,即數字型注入。當你輸入的參數爲整型時,如id,年齡,頁碼。。。,如果錯在注入漏洞,則可以認爲存在整型注入。當輸入?id=1’時 肯定要報錯了 如圖所示


0x002

因爲是整型注入,所以不需要php中是如何傳給sql語的問題,只需直接構造自己想要查詢的內容即可。然後開始猜列數,即用order by 比如


採用折半查法,慢慢猜吧。。。。。。

0x003

通過0x003 可以知道行數爲3後,通過union select 查詢當前數據庫 當前用戶 當前版本 等等信息 如圖:



按照這個語法一次可以得到user() version() 等信息
例如:

union select 1,2,user() –+

union select 1,2,version() –+

0x004


通過informa_schemation庫 可以得到任何你想要的信息(前提是用一個類似於root用戶登錄數庫的)

union select 1,2,group_concat(table_schema) from information_schemation.tables --+ 

這將輸出所有的數據庫,找到要爆破的庫,然後
union select 1,2 group_oncat(table_name) from infomation_schema.tables where table_schemation = 'security' --+
就可以爆表了,然後一次報字段 報字段內容。。。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章