python sqlmap 检测sql注入点及php网站sql注入防护运维操作实例
问题描述:使用python sqlmap 检测存在sql注入风险,网站为php语言
操作步骤:1.本地电脑系统是win 7,查看未安装python,需要先安装python,注:win 7安装python3.8 ,过高版本系统不支持
搜索下载python-3.8.10-amd64.exe安装包,也可以登录python官网下载:https://www.python.org/downloads/windows/,下载后点击python-3.8.10-amd64.exe,出现下图安装界面,按图示勾选进行安装,第二红框第二复选框为增加path环境变量,方便后续操作。
自定义安装目录,文件夹中不要含文字空格,选择好路径,点击Install安装,等待进度条结束,出现安装成功页面:
安装完成后,打开本地电脑cmd命令窗口,输入python,出现如下图所示表示python安装成功。
2.安装sqlmap
2.1.下载sqlmap:http://sqlmap.org/
2.2. 将下载的SQLMAP安装包解压到文件夹sqlmap中,并复制到python的根目录下;
2.3.cmd命令进入sqlmap目录下,输入python sqlmap.py -h,出现如下信息则表示安装成功
2.4.sqlmap常用注入:
python sqlmap.py -u 地址 可以查看是否能对当前URL进行注入
python sqlmap.py -u 地址 -v 1 --dbs // 列举数据库列表
python sqlmap.py -u 地址 -v 1 --current-db// 显示当前数据库
python sqlmap.py -u 地址 -v 1 --users // 列举所有数据库用户
python sqlmap.py -u 地址 -v 1 --current-user // 显示当前用户
python sqlmap.py -u 地址 -v 1 -D "database_name" --tables // 列举databas的所有表
python sqlmap.py -u 地址 -v 1 -D "database_name" -T "table_name" --columns // 列举所有字段
python sqlmap.py -u 地址 -v 1 -D "database_name" -T "table_name" -C"columns1,columns2" –dump //导出相关字段
而且SQLMAP会将数据存储在sqlmap/output/
执行命令后出现如下图所示,表明找到注入点:
2.5.php站点按如下步骤开启sql防护:
(1)过滤一些常见的数据库操作关键字,例如对select ,insert,update,delete,and,*,(,),'等敏感字符或通过系统函数addslashes对内容进行过滤。
(2)php配置文件php.ini中register_globals=off;display_error=off,debug设置为false
(3)开启PHP安全模式safe_mode=on
(4)打开magic_quotes_gpc来防止SQL注入,默认为关闭,开启后自动把用户提交sql查询语句进行转换把"'"转换成"\'"
(5)网站安装waf防护软件
2.6.安装过滤拦截后再次执行上述同样命令出现如下图所示,已经无法扫描到注入点: