參考
之前的一篇文章 小白的SQL注入中垮卓, 我用了一些常規(guī)的手法傻工,
- 檢測是否有注入
- 爆表的字段數(shù)
- 利用表的字段數(shù)目爆數(shù)據(jù)庫和所有的表
- 然后利用union查詢flag表的信息
其實(shí)這些過程是可以利用一個(gè)自動化注入工具來完成的
sqlmap
檢查注入點(diǎn)
使用-u參數(shù)挑格, -u URL
爆所有數(shù)據(jù)庫信息
-dbs
爆當(dāng)前數(shù)據(jù)庫信息
--current-dbs
指定數(shù)據(jù)庫的名字列出所有的表
-D 數(shù)據(jù)庫名 --tables
指定數(shù)據(jù)庫的表列出所有的字段
-D 數(shù)據(jù)庫名 -T 表名 --columns
指定數(shù)據(jù)庫名咙冗, 表名字段 dump出指定字段
-D 數(shù)據(jù)庫名 -T 表名 -C 字段名 --dump
BWVS靶場
這個(gè)靶場是我曾經(jīng)費(fèi)了好大功夫搭建的,為此弄懂了sql和php還有apache的關(guān)系
現(xiàn)在是時(shí)候發(fā)揮用場了
手工注入的一些常見手法
基于union的注入
一般必須有顯示位漂彤, 也就是數(shù)據(jù)庫查詢結(jié)果之后返回的信息是顯示在當(dāng)前頁面的哪幾個(gè)位置上
常用的
--+ # 注釋符
and version() > 0 --+ 判斷數(shù)據(jù)庫類型
and length(user()) > 0--+
猜解列數(shù)
order by 3 --+ 這個(gè)需要不斷地嘗試了
知道列數(shù)之后就方便了union注入
先記到這 聯(lián)合查詢注入
基于報(bào)錯(cuò)的注入
我才知道m(xù)ysql有這種特性雾消, 這些函數(shù)必須用select來進(jìn)行調(diào)用。挫望。
這個(gè)數(shù)據(jù)庫好好玩立润。。
原來這些函數(shù)可以這樣測試媳板, 漲姿勢了
原來可以通過這種方式去爆出表名和數(shù)據(jù)庫名
靶場演示
基本上數(shù)據(jù)庫的信息就都暴露出來了
中級的題目修改成用 post方式了
上海那個(gè)比賽的另一道SQL注入題目
1 的base64編碼為 QM==
過濾了or and select union 關(guān)鍵字
去除了單引號桑腮,雙引號,空格等字符
可以雙寫繞過關(guān)鍵字的過濾