ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

手工注入——MySQL手工注入实战和分析

2020-04-07 18:57:10  阅读:240  来源: 互联网

标签:语句 group name 手工 查询 select MySQL concat 注入


今天进行了MySQL手工注入实战,分享一下自己的实战过程和总结,这里环境使用的是墨者学院的在线靶场。话不多说,咱们直接开始。

第一步,判断注入点

通过 ' 和构造 and 1=1 和 and 1=2 查看页面是否报错。这里通过and 1=1 发现页面正常。如下图。

 

接下来,咱们再构造 and 1=2 发现页面报错,说明页面存在注入点。如下图。

 

第二步,判断字段数

通过 order by 语句,如果后面输入的数字大于数据库的字段数,页面就会报错,通过这个,咱们先输入 order by 4 发现页面正常。如下图。

 

接下来,咱们输入 order by 5,发现页面报错,说明数据库中存在四个字段。如下图

 

第三步,爆库

通过上一步,咱们已经知道了有几个字段,接下来,咱们通过联合查询,将 database() 依次替换1,2,3,4 看看哪个位置会显示在页面中,通过测试发现,2,3,两个位置有回显。构造如下语句 union select 1,database(),user(),4 #     最后的#是注释符。结果如下图。注意:使用联合查询时,要使得前面不可查询 所以我把1替换成了-1 也可以直接在后面添加 and 1=2 两种方式都可以。

 

 

第四步,爆表

在上一步咱们已经爆出了数据库名,接下来咱们爆表名,在MySQL 5 和之后的版本,里面有一个information_schema表,这个表下面存放了数据库里面的所有表,接下来就可以查询啦,这里用到了group_concat()函数,咱们构造如下语句 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=库名(库名转换成十六进制)结果如下图。

 

第五步,爆字段

上面咱们查询出了表名,先用第一个表测试,接下来,爆字段,构造如下语句 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=表名(换成十六进制),结果如下图

 

第六步,爆账号,密码。

通过上面,咱们发现,有 name password 字段,一般账号密码存放在里面。如果咱们通过一般查询,会掉到坑里面,如果咱们直接通过如下语句查询 union select 1,name,password,4 from 表名。发现爆出了账号密码,然后高兴的去登陆。发现尴尬了。去下图。

 

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

 

接下来该怎么办呢,其实只要只要在上一个的语句后面加一个 limit 语句 就搞定了,还可以使用 group_concat() 函数 把上一句的 name 换成group_concat(name) 就可以啦 password 同理。这里使用了limit 语句 它的原理是 limit 0,1 是从第一行开始查询,查询一行。 limit 0,2 是从第一行开始查,查询两行。limit 1,2 是从第二行开始查询,查询两行。结果如下图。

查询出了第二个密码。账号同理。成功登陆后台。注入结束。

MySQL 手工注入总结

第一步,判断注入点,通过 ' 或者 and 1=1 和and 1=2

第二步,判断字段数,通过 order by 语句。

第三步,爆库,通过 union select 1,2,database(),4 #

第四步,爆表,通过 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=库名(库名换成十六进制)

第四步 爆字段,通过 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=表名(表名换成十六进制)

第五步 爆账号,密码,这里可以使用 limit 语句,也可以使用 group_concat()函数。上面演示了limit语句,如果用函数。通过语句 union select 1,group_concat(name),group_concat(password),4 from 表名。就可以直接得到两个账号和密码。
第六步 解密密码,登陆。​

 

标签:语句,group,name,手工,查询,select,MySQL,concat,注入
来源: https://www.cnblogs.com/lxfweb/p/12655316.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有