在天上飄了有段時間了得沉淀一下,我用的是sql_libs靶場
重新系統化學習一下手工注入(雖然有SQLmap一把梭)
核心綱要(b站視頻https://www.bilibili.com/video/av77851975?p=4)
一.字符型注入(less-4)
id = 1時
id=2時
可見這參數我們可控
下面就是讓他報錯,雙引號 讓他報錯
可以看見我們的參數是被雙引號包裹
加一個#把后面那個雙引號注釋掉,依舊報錯
因為報錯后面有個單括號所以我們除了要注釋引號還得閉合單括號,為了讓語句閉合 才能執行 (#號 url編碼之后就是%23)也可以用--+
用order by 猜查詢出當前數據庫的列數,這里拓展一下https://segmentfault.com/a/1190000002655427
然后select123
於是就可以查詢當前數據庫
知道數據庫 我們就查一下當前是數據庫的表,表就是table_name,所有的表就是group-concat(),從哪里查呢 從information_schema.tables ,限定條件就是我們當前數據庫
因為我們只需要查詢當前數據庫的表就行了所以 where table_schema = database()
我們現在再來看一下 emails表column里面有哪些字段(列數)
只要把table改為column,另外加上新的限定條件,where table_schema = database() and table_name = 'emails'
所以就是這樣select 1,group_concat(column_name),3 from information_schema.columns where table_schema = database() and table_name = 'emails' %23
現在我們知道這個表里面的字段(列數),我們就來看看字段里面的值只需要把group_concat(column_name)改為group_concat(concat_ws(':',id,email_id))
from 后面也得改掉 改為from emails
可以看見已經拿到用戶名和id了