sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。它拥有非常强大的检测引擎、具有多种特性的渗透测试神器、通过数据库指纹提取访问底层文件系统并通过外带连接执行命令。
支持的数据库:MySQL,Oracle, PostgreSQL, SQL Server, Microsoft Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MAXDB
UNION query SQL injection(可联合查询注入)
uError-based SQL injection(报错型注入)
uBoolean-based blind SQL injection(布尔型注入)
uTime-based blind SQL injection(基于时间延迟注入)
uStacked queries SQL injection(可多语句查询注入)
这里可以看我另一篇博客
SQL注入流程_xiaomengxin70的博客-CSDN博客_sql注入流程
--level 5:探测等级
探测等级随着等级的变高探测的东西会更更多,不加命令默认探测等级为1,最高为5,。并且随着探测等级越来越高,所需要花费的时间会更多
--level 共有五个等级,sqlmap使用的payload可以在xml/payloads.xml中看到,自己也可以根据相应的格式添加自己的payload。
level>=2的时候就会测试HTTP Cookie。
level>=3的时候就会测试HTTP User-Agent/Referer头。
level=5 的时候会测试HTTP Host
为了保证全面性建议使用更高的探测等级进行他探测
当前用户是否为管理权限
列出数据库管理员角色 用于查看数据库用户的角色,如果当前用户有权限读取包含所有用户的表,该命令会列举出每个用户的角色,也可以用-U参数指定想看哪个用户的角色。(注意:该命令只适用于当前数据库是Oracle的时候)
SQLMAP可以在请求中伪造http中的referer(Referer 的正确英语拼法是referrer
。由于早期HTTP规范的拼写错误,为了保持向后兼容就将错就错了。其它网络技术的规范企图修正此问题,使用正确拼法,所以目前拼法不统一。还有它第一个字母是大写。),当探测等级设定为3或以上时,会尝试对referer注入。可以用referer命令来欺骗。
运行自定义sql语句(我在这条命令时没太搞懂其含义)
运行任意操作系统命令 在数据库为mysql,postgresSQL,mincrosoft sql server
并且当前用户有权限使用特定的函数。如果数据库为以上三个,上传一个二进制库,包含用户自定义的函数sys_exec()和sys_eval(),那么创建的两个函数就可以执行系统命令。
使用该命令可以模拟一个真是的shell,当不能执行多语句时,仍可以使用into outfile写目录,创建一个web后门。要想执行改参数,则需要数据库管理员权限(这里我认为是渗透其目标数据库,留下后门,或者留下其他东西)
(原理,往服务器上写入了两个php,其中一个给提供了文件上传的页面,可以通过这个上传页面上传脚本文件到当前目录下。另外一个则是返回了可以执行系统命令的命令行,命令行也可以在网页url中通过对cmd参数传参执行系统命令)
当时用以上说的三个数据库时可以读取文件是文本或者二进制文件
在以上三个数据库时,当前用户有权限使用特定的函数,上传的文件可以是文本也可以是二进制文件。
file-write 从本地写入
file-dest 写入目标路径
写入文件至站点目录
sqlmap.py -u "http://www.xx.com/aa.aspx?id=123" --file-write=本地文件路径 --file-dest 网站路径(写入路径)+"/写入的文件名",sqlmap.py -u "http://www.xx.com/aa.aspx?id=123" --file-write=F:/a.aspx --file-dest D:/虚拟目录/Front/cx.aspx,D:/虚拟目录/Front 为网站的物理路径,写入成功后,即可通过浏览器访问,若为一句话木马则可使用中国菜刀进行连接。(注:网站路径必须为网站的真实物理路径(即绝对路径。也就是从盘符开始的路径),否则无法写入数据。)
具体可以看SQLMAP渗透笔记之file参数的使用_Birdman-one的博客-CSDN博客_sqlmap--file-dest
(这里只是引用,如果侵权可联系我删除)