SQL注入Getshell的奇思妙想(上)

news2024/9/22 5:35:05

前言

前段时间,hvv和找实习的师傅们也多了起来。而我也不例外,尝试投递了不少简历,结果是积累了大量的面试经验。笔者发现大量的hr面试官都喜欢从SQL注入开始询问,所以留心了一下关于SQL注入的问题的频率。结果非常amazing啊!不出意外的是
–os-shell名列榜首。

比如这道题我都遇见不下三次:SQL注入getshell的方式?

答:getshell是指攻击者通过利用SQL注入获取系统权限的方法,Webshell提权分两种:一是利用 outfile函数 ,另外一种是利用
–os-shell ;UDF提权通过堆叠注入实现;MOF提权通过"条件竞争"实现

小提示:有sql注入试着––is–dba,如果有有绝对路径就––os–shell,不行扫后台,尝试用管理员账户密码登录

Webshell提权

一、 into outfile

into outfile利用的 先决条件:

web目录具有写权限,能够使用单引号

知道网站绝对路径(根目录,或则是根目录往下的目录都行)

secure_file_priv没有具体值( 在mysql/my.ini中查看

secure_file_priv:secure_file_priv是用来限制load 、dumpfile、into
outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限。

关于secure_file_priv的配置介绍:

secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出

当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下

当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

所以如果我们要想使用into outfile函数写入一句话就需要将secure_file_priv 的值设为没有值,那如何设置呢?

答:(1)看secure-file-priv参数的值:show global variables like
‘%secure%’;若secure_file_priv 的值默认为NULL,则表示限制mysqld 不允许导入|导出

(2)修改secure_file_priv 的值:我们可以在mysql/my.ini中查看是否有secure_file_priv
的参数,如果没有的话我们就添加 secure_file_priv = ’ ’
即可;此时再查看secure_file_priv的值如下已经变为空了,设置完成后我们就可以利用这个函数来写入一句话木马

写入webshell(以sqli-labs第七关为例)

  1. 注入点判断1653298693_628b56059104482febaa7.png!small

因为我们发现输入正确/错误的语法显示说语法正确/错误,即页面只存在两种状态,判断为盲注。我们输入如下代码时,所以我们通过输入如下代码可以,通过回显获得情报!

?id=1’)) – -

我们继续测试

?id=3’)) and sleep(5) --+

1653299760_628b5a30d34a8f25bdaab.png!small?1653299761283

我们发现成功延时,所以注入点就为1’)),我们输入的字符被包含在单引号中,且单引号外有两个双引号包裹;最终根据显示出"你在…使用outfile…"这个提示;我们就找到了他要是使用SQL注入"一句话木马"达到getshll的目的

  1. 判断列数1653300311_628b5c57503ba5aec0021.png!small?1653300311710

补充 :我们使用order by 语句判断列数,order by 3时,正常显示,4时不正常,判断为3列

  1. 写入webshell1653300960_628b5ee09704fa119d2f1.png!small?1653300961042
  • 加如此前我们已经通过一些方法获取到了网站的根目录,则可以写入一句话:<?php eval($_REQUEST[123]);?> ;建议进行十六进制转码(不用编码也可以)编码后在最前面加上0X;最后我们将一句话木马进行十六进制编码后写入了根目录下的outfile.php文件中
  • ?id=-3')) union select 1,0x3c3f706870206576616c28245f524551554553545b315d293b3f3e,3 into outfile 'C:\xxxxxx\phpStudy\WWW\outfile.php' --+

补充
:这里网站的目录要使用双斜杠不然会写不进去,第一个斜杠是转义的意思,字符串解析不仅仅局限于C编译器,Java编译器、一些配置文件的解析、Web服务器等等,都会遇到对字符串进行解析的这个问题,由于传统的
Windows采用的是单个斜杠的路径分隔形式,导致在对文件路径进行解析的时候可能发生不必要的错误,所以就出现了用双反斜杠"“分隔路径的形式;不管解析引擎是否将反斜杠解析成转义字符,最终在内存中得到的都是”"的形式,结果也就不会出问题了

  1. 连接webshell

补充:如果我们将 secure_file_priv的值为设置为null,我们在进行上面的写入操作发现并没有写进去原因如下:所以没有写进去的情况有两种:
1.网站的路径不对,或者没有使用双斜杠进行转义;2.secure_file_priv的值不是为空

二、-os-shell原理

–os-shell 大致原理是将脚本插入到数据库(也可以是日志)中,然后生成相应的代码文件,获取shell即可执行命令;–os-
shell就是使用udf提权获取WebShell。也是通过into oufile向服务器写入两个文件,一个可以直接执行系统命令,一个进行上传文件

利用条件

要求为DBA数据库管理员权限(–is-dba:phpstudy搭建的一般为DBA)

php主动转义的功能关闭(PHP的GPC关闭),能使用单双引号(需要单引号路径,不能使用0x编码)

知道网站的绝对路径;文件不能覆盖写入,所以文件必须为不存在

–secure-file-priv没有值(该函数是能否执行-0s-shell的关键):–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

sqlmap在指定的目录生成了两个文件(文件名是随机的,并不是固定的)

tmpbeewq.php 用来执行系统命令

tmpuqvgw.php 用来上传文件

secure_file_priv没有具体值(在mysql/my.ini中查看)

magic_quotes_gpc:(PHP magic_quotes_gpc作用范围是:WEB客户服务端;作用时间:请求开始时)

使用Sqlmap实现步骤

1.弱口令登录  
2.抓包  
3.复制抓包的内容,保存为Alogin.txt(txt文件)到sqlmap目录下  
4.启动sqlmap:sqlmap -r OAlogin.txt --os-shell  
5.选择语言(ASP,ASPX,JSP,PHP)  
6.输入绝对路径  
7.写木马文件
  7.1:pwd //查看当前路径
  7.2:echo '<?php @eval($_POST['a']); ?>'>> 123.php  //将木马写入123.php
  7.3:cat 123.php //打印123.php文件的内容  
8.用webshell连接

路径(dns外带查询)问题

产生路径问题的原因是什么?

答:对于大多数sql注入的写Shell方式而言,网站的绝对的路径都是需要知道的,这里需要知道的原因绝不是因为outfile相对路径无法写shell,而是因为不知道路径,webshell无法连接且通过相对路径的方式写出来的shell大概率是无法执行的,或者是权限不够写

dnslog注入 :即,dns带外查询是属于Mysql注入的一种方法,可以通过查询相应的dns解析记录,来获取我们想要的数据

为什么需要它的帮忙?

答:一般情况下,在我们无法通过联合查询直接获取数据的情况下,我们只能通过盲注,来一步步的获取数据,但是,使用盲注,手工测试是需要花费大量的时间的,可能会想到使用sqlmap直接去跑出数据,但在实际测试中,使用sqlmap跑盲注,有很大的几率,网站把ip给封掉,这就影响了我们的测试进度。

LOAD_FILE()函数:LOAD_FILE()函数读取一个文件并将其内容作为字符串返回

语法为:load_file(file_name),其中file_name是文件的完整路径

该函数需要满足的条件(如下所示):

1.文件必须位于服务器主机上

2.你必须具有该FILE权限才能读取该文件。拥有该FILE权限的用户可以读取服务器主机上的任何文件,该文件是world-readable的或MySQL服务器可读的,此属性与secure_file_priv状态相关

3.文件必须是所有人都可读的,并且它的大小小于max_allowed_packet字节

网络安全工程师企业级学习路线

这时候你当然需要一份系统性的学习路线

如图片过大被平台压缩导致看不清的话,可以在文末下载(无偿的),大家也可以一起学习交流一下。

一些我收集的网络安全自学入门书籍

一些我白嫖到的不错的视频教程:

上述资料【扫下方二维码】就可以领取了,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/343232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

传统企业数字化转型,到底难在哪里?

数字化转型过程中面临最大的挑战和问题是什么&#xff1f;这篇整理了企业在数字化转型过程中普遍面临的9大问题和挑战以及如何解决这些问题&#xff0c;希望能够对各位企业数字化转型有多启发和帮助。 01 企业数字化转型三大现状 在梳理企业数字化转型问题之前&#xff0c;我想…

C++数据结构 —— 二叉搜索树

目录 1.二叉搜索树的基本概念 1.1二叉搜索树的基本特征 2.二叉搜索树的实现 2.1数据的插入(迭代实现) 2.2数据的搜索(迭代实现) 2.3中序遍历(递归实现) 2.4数据的删除(迭代实现) 2.5数据的搜索(递归实现) 2.6数据的插入(递归实现) 2.7数据的删除(递归实现) 2.8类的完…

元宇宙开始告别以资本为主导的野蛮生长,新的竞争格局和态势将形成

欲要成为这样一场洗牌的胜利者&#xff0c;元宇宙的玩家需要真正站在商业的角度&#xff0c;而非资本市场的角度来看待元宇宙&#xff0c;来寻找元宇宙的正确的发展模式和方法。原因在于&#xff0c;在这样一场洗牌过程当中&#xff0c;仅仅只是对于以往以资本为主导的发展模式…

Web自动化测试——selenium篇(二)

文章目录一、浏览器相关操作二、键盘操作三、鼠标操作四、弹窗操作五、下拉框选择六、文件上传七、错误截图一、浏览器相关操作 浏览器窗口大小设置 driver.manage().window().maximize();//窗口最大化 driver.manage().window().minimize();//窗口最小化 driver.manage().wi…

【GD32F427开发板试用】01适配RTX4+调试组件Event Recorder

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;汪阳 感谢极术社区和兆易创新组织的开发板试用活动。收到开发板有一周多了&#xff0c;因为工作关系好久没有折腾MDK了&#xff0c;上手浪费的…

教你文本生成图片——stablediffusion

今天来点轻松的话题&#xff0c;带大家玩一个用文字生成图片的模型。相信大家如果关注AIGC领域&#xff0c;对文本生成图片&#xff0c;对Stablefiffusion、DEALL.E应该不陌生。今天给大家介绍的就是基于SD2 finetune出来的一个模型&#xff08;&#xff09;这篇文章不会教大家…

ArcGIS中基于网格实现可视化

1 数据来源介绍 土地利用数据、高程数据、植被指数数据均来源于中国科学院资源环境科学与数据中心&#xff08;https://www.resdc.cn/&#xff09;。 2 数据预处理 我们从中国科学院资源环境科学与数据中心官网上下载下来的土地利用栅格数据是整型的&#xff0c;我们可以利用…

高低温真空磁场探针台T8-EM4的技术指标

锦正茂高低温真空磁场探针台探针台配备4个&#xff08;可选6个或8个&#xff09;拥有高精度位移的探针臂&#xff0c;同时配有高精度电子显微镜&#xff0c;便于微小样品的观察操作。探针可通过直流或者低频交流信号&#xff0c;用来测试芯片、晶圆片、封装器件等&#xff0c;广…

火眼审阅 | 基于NLP和OCR识别技术赋能合同审阅

合同作为确定权利义务的法律文件&#xff0c;贯穿企业内外部活动的所有环节&#xff0c;可见合同数据之于企业是非常重要的数据资产。 合同管理是企业营业中的重要部分&#xff0c;其中合同审核是企业法务的基本工作之一。而对于所有的法务人员一直存在一个问题&#xff1a;合…

Java读取mysql导入的文件时中文字段出现�??的乱码如何解决

今天在写程序时遇到了一个乱码问题&#xff0c;困扰了好久&#xff0c;事情是这样的&#xff0c; 在Mapper层编写了查询语句&#xff0c;然后服务处调用&#xff0c;结果控制器返回一堆乱码 然后查看数据源头处&#xff1a; 由重新更改解码的字符集&#xff0c;在数据库中是正…

算法总结c++

文章目录基本概念时间复杂度空间复杂度基本结构1. 数组前缀和差分数组快慢指针(索引)左右指针&#xff08;索引&#xff09;盛水容器三数之和最长回文子串2. 链表双指针删除链表的倒数第 n 个结点翻转链表递归将两个升序链表合并为一个新的 升序 链表链表翻转3. 散列表twoSum无…

Camtasia2023最新版本新功能及快捷键教程

使用Camtasia&#xff0c;您可以毫不费力地在计算机的显示器上录制专业的活动视频。除了录制视频外&#xff0c;Camtasia还允许您从外部源将高清视频导入到录制中。Camtasia的独特之处在于它可以创建包含可单击链接的交互式视频&#xff0c;以生成适用于教室或工作场所的动态视…

UDS诊断之DTC码构成

DTC(Diagnostic Trouble Code)表示诊断故障码&#xff08;全局唯一&#xff09;&#xff0c;是故障类型的"身份ID"&#xff1b;用于汽车故障时对故障部位及原因的排查。 格式如下&#xff1a; 其中&#xff0c;DTCHighByte、DTCMiddleByte这两个字节表示故障内码&…

nvm控制node版本

安装 nvm 1、下载 nvm 官网安装包&#xff1a; github 选择 nvm-setup.exe 下载 2、安装 1、选择 nvm 安装目录&#xff08;可自定义&#xff09; 2、选择 node 安装目录&#xff08;如有安装过&#xff0c;可以选择以前安装目录&#xff0c;可 cdm 输入 where node 查看原nod…

嵌入式Qt 开发一个音乐播放器

上篇文章&#xff1a;RK3568源码编译与交叉编译环境搭建&#xff0c;进行了OK3568开发板软件开发环境搭建&#xff0c;通过编译RK3568的源码&#xff0c;可以得到Qt开发的交叉编译相关工具。 本篇&#xff0c;就来在搭建好的软件开发中&#xff0c;进行Qt软件的开发测试。由于…

package-lock.json,深度内容

前言 看完本文&#xff0c;你将从整体了解依赖版本锁定原理&#xff0c;package-lock.json 或 yarn.lock 的重要性。首先要从最近接连出现两起有关 npm 安装 package.json 中依赖包&#xff0c;由于依赖包版本更新 bug 造成项目出错问题说起。 事件一&#xff1a;新版本依赖包…

JavaScript 二叉树

文章目录前言一、何为 树1.根节点2.外&内部节点3.子树4.深度5.高度二、二叉树 & 二叉搜索树1.二叉搜索树插入值2.遍历二叉搜索树I.中序遍历II.先序遍历III.后序遍历3.查找节点4.移除节点总结前言 同前面说到的散列表结构, 树也是一种非顺序数据结构, 对于存储需要快速…

【浅学Nginx】Nginx安装和基础使用

Nginx安装和基础使用1. Nginx是什么2. Nginx的安装3. Nginx的目录结构4. Nginx的配置文件结构5. Nginx的具体应用5.1 部署静态资源5.2 反向代理5.3 负载均衡1. Nginx是什么 Nginx是一个轻量级的 web服务器 / 反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服…

kettle开发-Day37-SQ索引优化

前言&#xff1a;在上一个生产项目中&#xff0c;有个单表数据超249G了&#xff0c;里面存储的数据时间跨度就1年左右&#xff0c;那为啥会出现这种情况呢&#xff1f;数据来源为&#xff0c;一个生产基地所有电表的每分钟读数&#xff0c;一个基地大概500个电表左右&#xff0…

【C++】---Stack和Queue的用法及其模拟实现

文章目录Stack最小栈栈的弹出压入序列逆波兰表达式求值用栈实现队列模拟实现queue用队列实现栈模拟实现Stack stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。它的使用和之前学习的ve…