前段时间一直在研究Webshell相关内容,涉及到使用sql注入进行getshell,因此准备对于sql注入过程做一个比较系统的总结,sql注入部分主要分为sqlmap6步法和手工注入法两部分,本文将主要针对sqlmap注入法进行介绍,手工注入法将在下一篇文章中进行介绍。
sqlmap注入6步法
首先要进行介绍的就是sql注入到getshell的常见6步法,该方法涵盖了整个过程常见的全部关键步骤。本文主要介绍使用sqlmap工具来进行sql注入的过程。
1.判定是否存在注入点
1 | 对提供的网址进行注入点测试 |
输出结果:
2.数据库名获取
1 | 获取数据库名称 |
输出结果:
3.获取数据库中的表名
1 | 获取表名 |
输出结果:
4.对选定表的列名进行获取
1 | 获取表中字段名称 |
输出结果:
5.探测用户名密码
1 | 获取用户名和密码并保存到指定文件 |
输出结果:
6.获取shell
os-shell只是一个辅助上传大马、小马的辅助shell,可以使用也可以直接利用数据库备份功能人工上传大、小马不进行这一步。
1 | 获取os-shell |
这里使用os-shell需要很高的权限才能成功使用。具体需要的权限包括:
1.网站必须是root权限
2.了解网站的绝对路径
3.GPC为off,php主动转义的功能关闭
4.secure_file_priv= 值为空
使用sqlmap存在一种缓存机制,如果完成了一个网址的一个注入点的探测,下次再进行探测将直接使用上次探测的结果进行展示,而不是重新开始探测,因此有时候显示的结果并不是我们当下探测进型返回的,面对这种情况就加上选项。
1 | --purge 清除之前的缓存日志 |
本文中提到的是一个标准的简单环境的sql注获取方式,但是在实际环境中,进行sql注入还存在权限不足、不知道绝对路径等关键问题,这些问题将在[sql注入——getshell中的问题]中进行具体讲述。